




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7讲Hive数据仓库
数据分析者面临的问题
数据日趋庞大,无论是入库和查询,都出现性能瓶颈用户的应用和分析结果呈整合趋势,对实时性和响应时间要求越来越高使用的模型越来越复杂,计算量指数级上升数据分析者期待的解决方案
完美解决性能瓶颈,在可见未来不容易出现新瓶颈过去所拥有的技能可以平稳过渡。比如SQL、R转移平台的成本有多高?平台软硬件成本,再开发成本,技能再培养成本,维护成本Hive简介
起源自facebook由JeffHammerbacher领导的团队构建在Hadoop上的数据仓库框架设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据2008年facebook把hive项目贡献给Apache
Hive
数据仓库工具。可以把Hadoop下的原始结构化数据变成Hive中的表支持一种与SQL几乎完全相同的语言HiveQL。除了不支持更新、索引和事务,几乎SQL的其它特征都能支持可以看成是从SQL到Map-Reduce的映射器提供shell、JDBC/ODBC、Thrift、Web等接口Hive不适合用于联机事务处理,也不提供实时查询功能。最适合应用在基于大量不可变数据的批处理作业。Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。Hive现状
Hadoop生态圈中的重要项目企业级数据仓库的主流架构之一解决“即席查询”的问题注意Cloudera的Impala项目,号称比Hive要快3-30倍兼容SQL是目前大数据产品的风向标体系结构图1、用户接口主要有三个:命令行(CLI),客户端(Client)和WEB界面(WUI)。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive服务。Client是Hive的客户端,用户连接至HiveServer。在启动Client模式的时候,需要指出HiveServer所在节点,并且在该节点启动HiveServer。WUI是通过浏览器访问Hive。2、元数据存储。Hive将元数据存储在数据库中,如mysql、derby嵌入式数据库。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。3、执行。解释器、编译器、优化器完成HiveQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。4、HDFS存储。Hive的数据存储在HDFS中,大部分的查询由MapReduce完成(包含*的查询,比如select*fromtbl不会生成MapRedcue任务)。Hive元数据存储Hive将元数据存储在RDBMS中,有三种模式可以连接到数据库:SingleUserMode:此模式连接到一个In-memory的数据库Derby,一般用于UnitTest。Hive安装
内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接本地独立模式:在本地安装Mysql,把元数据放到Mysql内远程模式:元数据放置在远程的Mysql数据库内嵌模式式安装下载并解解压Hive设置环境境变量(修改profile文件)配置文件件hive-env.shhive-site.xmlcphive-default.xml.templatehive-site.xml启动hiveHive命令行启启动方式式:直接接输入/hive/bin/hive命令,或者输入入hive-servicecli命令。Hiveweb界面启动动方式::输入hive-servicehwi命令。Hive采用远程程服务启启动方式式:远程程服务的的端口号号为10000,采用hive--servicehiveserver命令。Hive采用远程程后台启启动方式式:关闭闭Hive终端,但但是Hive服务不退出,采用用nohuphive--servicehiveserver命令。简单建删表测测试一个常见错误误解决方法修改hadoop-env.shHive安装:独立模模式可参考网络资资源:Hive的服务Hive不仅仅是一个个shell,通过配置,,还可以提供供Thrift服务器、Web接口、元数据据和JDBC/ODBC服务,具有强强大的功能和和良好的可扩扩展性。1、Hiveshell执行HiveQL(大约相当于于SQL92标准)查看或临时时设置Hive参数,只对当当前会话有效效创建函数导入jar包HiveQL查询语言HiveQL是一种类似SQL的语言查询语言HQLSQL数据存储位置HDFSRawDevice或者LocalFS数据格式用户定义系统决定数据更新不支持支持索引无有执行MapRedcueExecutor执行延迟高低可扩展性高低数据规模大小HiveQL查询语言1.查询语言。由由于SQL被广泛的应用用在数据仓库库中,因此,,专门针对Hive的特性设计了了类SQL的查询语言HQL。熟悉SQL开发的开发者者可以很方便便的使用Hive进行开发。2.数据存储位置置。Hive是建立在Hadoop之上的,所有有Hive的数据都是存存储在HDFS中的。而数据据库则可以将将数据保存在在块设备或者者本地文件系系统中。3.数据格式。Hive中没有定义专专门的数据格格式,数据格格式可以由用用户指定,用用户定义数据据格式需要指指定三个属性性:列分隔符符(通常为空空格、”\t”、”\x001″″)、行分隔符符(”\n”)以及读取文文件数据的方方法(Hive中默认有三个个文件格式TextFile,SequenceFile以及RCFile)。由于在加加载数据的过过程中,不需需要从用户数数据格式到Hive定义的数据格格式的转换,,因此,Hive在加载的过程程中不会对数数据本身进行行任何修改,,而只是将数数据内容复制制或者移动到到相应的HDFS目录中。而在在数据库中,,不同的数据据库有不同的的存储引擎,,定义了自己己的数据格式式。所有数据据都会按照一定的组织存存储,因此,,数据库加载载数据的过程程会比较耗时时。HiveQL查询语言4.数据更新。由由于Hive是针对数据仓仓库应用设计计的,而数据据仓库的内容容是读多写少少的。因此,,Hive中不支持对数数据的改写和和添加,所有有的数据都是是在加载的时时候中确定好好的。而数据据库中的数据据通常是需要要经常进行修修改的,因此此可以使用INSERTINTO...VALUES添加数据,使使用UPDATE...SET修改数据5.索引。之前已已经说过,Hive在加载数据的的过程中不会会对数据进行行任何处理,,甚至不会对对数据进行扫扫描,因此也也没有对数据据中的某些Key建立索引。。Hive要访问数据据中满足条条件的特定定值时,需需要暴力扫扫描整个数数据,因此此访问延迟迟较高。由由于MapReduce的引入,Hive可以并行访访问数据,,因此即使使没有索引引,对于大大数据量的的访问,Hive仍然可以体体现出优势势。数据库库中,通常常会针对一一个或者几几个列建立立索引,因因此对于少少量的特定定条件的数数据的访问问,数据库库可以有很很高的效率率,较低的的延迟。由由于数据的的访问延延迟较高,,决定了Hive不适合在线线数据查询询。6.执行。Hive中大多数查查询的执行行是通过Hadoop提供的MapReduce来实现的((类似select*fromtbl的查询不需需要MapReduce)。而数据据库通常有有自己的执执行引擎。。HiveQL查询语言7.执行延迟。。之前提到到,Hive在查询数据据的时候,,由于没有有索引,需需要扫描整整个表,因因此延迟较较高。另外外一个导致致Hive执行延迟高高的因素是是MapReduce框架。由于于MapReduce本身具有较较高的延迟迟,因此在在利用MapReduce执行Hive查询时,也也会有较高高的延迟。。相对的,,数据库的的执行延迟迟较低。当当然,这个个低是有条条件的,即即数据规模模较小,当当数据规模模大到超过过数据库的的处理能力力的时候,,Hive的并行计算算显然能体体现出优势势。8.可扩展性。。由于Hive是建立在Hadoop之上的,因因此Hive的可扩展性性是和Hadoop的可扩展性性是一致的的。而数据据库由于ACID语义的严格格限制,扩扩展行非常常有限。9.数据规模。。由于Hive建立在集群群上并可以以利用MapReduce进行并行计计算,因此此可以支持持很大规模模的数据;;对应的,,数据库可可以支持的的数据规模模较小。HiveQL查询语言Hive安装与部署署成功之后后,在命令令行输入hive进入shell。1、退出shell:Hive>quit;2、查看已有有表Hive>showtables;3、查看表结结构Hive>describetablename;建表CreateTableCREATE[EXTERNAL]TABLE[IFNOTEXISTS]table_name[(col_namedata_type[COMMENTcol_comment],...)][COMMENTtable_comment][PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)][CLUSTEREDBY(col_name,col_name,...)[SORTEDBY(col_name[ASC|DESC],...)]INTOnum_bucketsBUCKETS][ROWFORMATrow_format][STOREDASfile_format][LOCATIONhdfs_path]CREATETABLE创建一个指指定名字的的表。如果果相同名字字的表已经经存在,则则抛出异常常;用户可可以用IFNOTEXIST选项来忽略略这个异常常。EXTERNAL关键字可以以让用户创创建一个外外部表,在在建表的同同时指定一一个指向实实际数据的的路径(LOCATION),Hive创建内部表表时,会将将数据移动动到数据仓仓库指向的的路径;若若创建外部部表,仅记记录数据所所在的路径径,不对数数据的位置置做任何改改变。在删删除表的时时候,内部部表的元数数据和数据据会被一起起删除,而而外部表只只删除元数数据,不删删除数据。。LIKE允许用户复复制现有的的表结构,,但是不复复制数据。。用户在建表表的时候可可以自定义义SerDe或者使用自自带的SerDe。如果没有有指定ROWFORMAT或者ROWFORMATDELIMITED,将会使用用自带的SerDe。在建表的的时候,用用户还需要要为表指定定列,用户户在指定表表的列的同同时也会指指定自定义义的SerDe,Hive通过SerDe确定表的具具体的列的的数据。如果文件数数据是纯文文本,可以以使用STOREDASTEXTFILE。如果数据据需要压缩缩,使用STOREDASSEQUENCE。有分区的表表可以在创创建的时候候使用PARTITIONEDBY语句。一个个表可以拥拥有一个或或者多个分分区,每一一个分区单单独存在一一个目录下下。而且,,表和分区区都可以对对某个列进进行CLUSTEREDBY操作作,,将将若若干干个个列列放放入入一一个个桶桶((bucket)中中。。也也可可以以利利用用SORTBY对数数据据进进行行排排序序。。这这样样可可以以为为特特定定应应用用提提高高性性能能。。表名名和和列列名名不不区区分分大大小小写写,,SerDe和属属性性名名区区分分大大小小写写。。表表和和列列的的注注释释是是字字符符串串。。创建建表表创建建表表列类类型型Hive支持持的的数数据据类类型型如如下下:原生生类类型型:TINYINTSMALLINTINTBIGINTBOOLEANFLOATDOUBLESTRING以上上才才可可用用)以上上才才可可用用)复合合类类型型:arrays:ARRAY<data_type>maps:MAP<primitive_type,data_type>structs:STRUCT<col_name:data_type[COMMENTcol_comment],...>union:UNIONTYPE<data_type,data_type,...>Hive中表表的的类类型型Hive没有有专专门门的的数数据据存存储储格格式式,,也也没没有有为为数数据据建建立立索索引引,,用用户户可可以以非非常常自自由由的的组组织织Hive中的表,只需需要在创建表表的时候告诉诉Hive数据中的列分分隔符和行分分隔符,Hive就可以解析数数据。Hive中所有的数据据都存储在HDFS中,Hive中包含以下数数据模型:Table,ExternalTable,Partition,Bucket。(1)普通表普通表的创建建就是一个表表对应一个表表名和表名对对应的文件。。(2)外部表建表的同时指指定一个指向向实际数据的的路径,创建建内部表时会会将数据移动动到数据仓库库指向的路径径;若创建外外部表,仅记记录数据所在在的路径,不不对数据的位位置做任何改改变。删除表表时,内部表表的元数据和和数据一起被被删,而外部部表只删除元元数据,不删删除数据。(3)分区表在Hive中,表中的一一个Partition对应于表下的的一个目录,,所有的Partition的数据都存储储在对应的目目录中。例如如:pvs表中包含ds和city两个Partition,则对应于ds=20090801,ctry=US的HDFS子目录为:/wh/pvs/ds=20090801/ctry=US;对应于ds=20090801,ctry=CA的HDFS子目录为;/wh/pvs/ds=20090801/ctry=CA加载数据Hive不支持一条一一条用insert语句进行插入入操作,也不不支持update操作。数据以以load的方式加载到到建立好的表表中,一旦导导入,不可修修改。LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]Load操作只是单纯纯的复制/移动操作,将将数据文件移移动到Hive表对应的位置置。filepath可以是:相对路径,例例如:project/data1绝对路径,例例如:/user/hive/project/data1包含模式的完完整URI,例如:hdfs://namenode:9000/user/hive/project/data1加载的目标可可以是一个表表或者分区。。如果表包含含分区,必须须指定每一个个分区的分区区名。filepath可以引用一个个文件(这种种情况下,Hive会将文件移动动到表所对应应的目录中))或者是一个个目录(在这这种情况下,,Hive会将目录中的的所有文件移移动至表所对对应的目录中中)。如果指定了LOCAL,那么:load命令会去查找找本地文件系系统中的filepath。如果发现是是相对路径,,则路径会被被解释为相对对于当前用户户的当前路径径。用户也可可以为本地文文件指定一个个完整的URI,比如:file:///user/hive/project/data1.load命令会将filepath中的文件复制制到目标文件件系统中。目目标文件系统统由表的位置置属性决定。。被复制的数数据文件移动动到表的数据据对应的位置置。如果没有指定定LOCAL关键字,如果果filepath指向的的是一一个完完整的的URI,hive会直接接使用用这个个URI。否则则:如果没没有指指定schema或者authority,Hive会使用用在hadoop配置文文件中中定义义的schema和authority,指定了了Namenode的URI。如果路路径不不是绝绝对的的,Hive相对于于/user/进行解解释。。Hive会将filepath中指定定的文文件内内容移移动到到table(或者者partition)所指指定的的路径径中。。如果使使用了了OVERWRITE关键字字,则则目标标表((或者者分区区)中中的内内容((如果果有))会被被删除除,然然后再再将filepath指向的文件件/目录中的内内容添加到到表/分区中。如果目标表表(分区))已经有一一个文件,,并且文件件名和filepath中的文件名名冲突,那那么现有的的文件会被被新文件所所替代。插入数据SELECT查询SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]][LIMITnumber]一个SELECT语句可以是是一个union查询或一个个子查询的的一部分table_reference是查询的输输入,可以以是一个普普通表、一一个视图、、一个join或一个子查查询简单查询。。例如,下下面这一语语句从t1表中查询所所有列的信信息。SELECT*FROMt1WHEREClauseWHEREClause是一个布尔尔表达式,,不支持where子句中的in,exit或子查询使用ALL和DISTINCT选项区分对对重复记录录的处理。。默认是ALL,表示查询询所有记录录。DISTINCT表示去掉重重复的记录录。hive>SELECTcol1,col2FROMt113131425hive>SELECTDISTINCTcol1,col2FROMt1131425基于Partition的查询一般SELECT查询会扫描描整个表((除非是为为了抽样查查询)。但但是如果一一个表使用用PARTITIONEDBY子句建表,,查询就可可以利用分分区剪枝((inputpruning)的特性,,只扫描一一个表中它它关心的那那一部分。。Hive当前的实现现是,只有有分区断言言出现在离离FROM子句最近的的那个WHERE子句中,才才会启用分分区剪枝。。例如,如如果page_views表使用date列分区,以以下语句只只会读取分分区为‘2008-03-01’的数据。SELECTpage_views.*FROMpage_viewsWHEREpage_views.date>='2008-03-01'ANDpage_views.date<='2008-03-31';查询连接HiveQL的连接分为为内连接、、左向外连连接、右向向外连接、、全外连接接和半连接接5种。例如:Selectuserinfor.*,choice.*fromuserinforjoinchoiceon(userinfor.id=choice.userid);表连接JDBC/ODBC接口用户可以像像连接传统统关系数据据库一样使使用JDBC或ODBC连接Hive目前还不成成熟JDBC的具体连接接过程1.使用jdbc的方式连接接Hive,首先做的的事情就是是需要启动动hive的ThriftServer,否则连接hive的时候会报报connectionrefused的错误。启动命令如如下:hive--servicehiveserver2.新建java项目,然后后将hive/lib下的所有jar包和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第2讲 动能定理及其应用-2026版大一轮高考物理复习
- 2024年美容师提升技巧试题及答案
- 图形软件操作基础试题及答案
- 经典汽车维修案例分析试题及答案
- 解析2024年统计学考试的重要内容与答案
- 自考复习中的资料深度挖掘试题及答案
- 汽车美容师的合规性原则试题及答案
- 2024-2025学年安徽省六安市独山中学高一下学期2月月考生物试题及答案
- 美容师技能大赛的意义与试题及答案
- 2024年美容师客户节日营销活动策划试题及答案
- 20起典型火灾事故案例合集-2024年消防月专题培训
- 环境监测站运行管理与质量控制标准
- 20以内的加法口算练习题4000题 284
- 高中历史选择性必修2知识点总结归纳
- 国家开放大学《学前儿童语言教育活动指导》形成性考核1-4参考答案
- 湖南省2024年对口升学考试计算机应用类试题(含参考答案)
- 2018海湾GST-GD-N90消防应急广播设备安装使用说明书
- 项目风险记录及跟踪表
- 2024年个人信用报告(个人简版)样本(带水印-可编辑)
- 社会信用法概论智慧树知到期末考试答案章节答案2024年湘潭大学
- 保险:保险投资指南之寿险新准则分析手册
评论
0/150
提交评论