《商务智能技术应用》课件-04-数据仓库工具Hive_第1页
《商务智能技术应用》课件-04-数据仓库工具Hive_第2页
《商务智能技术应用》课件-04-数据仓库工具Hive_第3页
《商务智能技术应用》课件-04-数据仓库工具Hive_第4页
《商务智能技术应用》课件-04-数据仓库工具Hive_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章

数据仓库04数据仓库工具HiveHadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。Hadoop简介HDFSHBaseZookeeper分布式协调-->HAMapReduceAmbariMahoutHiveSqoopPig数据分析引擎数据采集引擎Flume...机器学习算法库Hive是一个基于Hadoop的数据仓库工具,用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。Hive是一个翻译器:SQL--->Hive引擎--->MapReduce程序Hive是构建在HDFS上的一个数据仓库(DataWarehouse)Hive支持SQL(部分支持,并非全部)Hive简介HiveHDFS表目录分区目录数据文件桶文件Hive体系结构主要包含用户接口,元数据存储,Hive驱动器,Hadoop集群这几个部分。Hive的体系结构Hive利用HDFS存储数据,利用MapReduce查询分析数据。Hive的工作原理Hive接口驱动程序driver编译器compiler元存储MetaStore执行引擎ExecutionEngineYARN(MapReduce)HDFS1102534787.169Hive的设计特点1支持索引,加快数据查询。2不同的存储类型,例如,纯文本文件、HBase中的文件3将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间4可以直接使用存储在Hadoop文件系统中的数据5内置大量可扩展的用户函数UDF来操作时间、字符串和其他的数据挖掘工具6类SQL的查询方式,可将SQL查询转换为MapReduce任务在Hadoop上执行Hive在很多方面和传统数据库类似,但是其底层对HDFS和MapReduce的依赖意味着它的体系结构有别于传统数据库。Hive与传统数据库对比对比项传统数据库HiveSQL语句支持不完全支持事务支持不支持索引支持支持更新数据保存块设备、本地文件系统HDFS数据规模小大执行延迟低高多表插入不支持支持子查询完全支持只能用在From子句中视图可更新只读Hive的设计目标是,通过类SQL的语言实现在大规模数据集上快速的数据查询等操作,而不需要开发相应的MapReduce程序,所以Hive特别适合数据仓库的统计分析。Hive构建在基于静态批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销,因此Hive并不适合那些需要低延迟的应用。Hive的使用场景适合网络日志分析多维度数据分析海量结构化数据离线分析不适合联机事务处理OLTP联机分析处理OLAPHive的内置数据类型分为两大类,一个是基本数据类型,另一个是集合数据类型。基础类型包括INT、BOOLEAN、FLOAT、DOUBLE、STRING、CHAR、VARCHAR、DATE等,集合类型包括ARRAY、MAP、STRUCT、UNION。Hive的数据类型数据类型长度例子TINYINT1byte有符号整数-128~12720SMALLINT2byte有符号整数-32768~3276720INT/INTEGER4byte有符号整数-2147483648~214748364720BIGINT8byte有符号整数-9223372036854775808~922337203685477580720BOOLEAN布尔类型true/falseTRUEFLOAT4byte单精度浮点数3.14DOUBLE8byte双精度浮点数3.14数据类型长度例子STRING字符序列'thankyou',"Iamfine"BINARY字节数组TIMESTAMP整数浮点数或字符串DECIMAL任意精度有符号小数decimal(3,1)3表数字长度,1表数字长度。表示范围为99.9~-99.9VARCHAR长度介于1和65355之间字符串"hello"CHAR固定长度255的字符串"hello"DATEYYYY-­MM-­DD日期格式'0000-01-01'~'9999-­12-31''2013-01-01'Hive文件通常存储在HDFS上,存储格式也是Hadoop通用的数据格式,主要包含TEXTFILE、SequenceFile、RCFile、ORCFile、Parquet、Avro这几种格式的文件,当然也可以自定义文件类型。Hive的存储格式Hive存储格式TEXTFILESequenceFileRCFileORCFileParquetAvroHive为了更好支持大规模数据分析,默认使用了几个很少出现在字段值中的控制字符,而不是逗号、制表符这类常用的分隔符。下表为Hive中默认的记录和字段分隔符。Hive文件的分隔符分隔符

描述\n对于文本文件来说,每行都是一条记录,因此换行符可以分隔记录^A(Ctrl+A)^A(Ctrl+A)用于分隔字段(列)。在CREATETABLE语句中可以使用八进制编码\001表示^B用于分隔ARRAY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。在CREATETABLE语句中可以使用八进制编码\002表示^C用于MAP中键和值之间的分隔。在CREATETABLE语句中可以使用八进制编码\003表示Hive的数据模型分为托管表、外部表、分区表、桶表、视图。Hive的数据模型数据模型托管表外部表分区表桶表视图Hive托管表也称为内部表,它与数据库中的Table在概念上是类似,每一个Table在Hive中都有一个相应的目录存储数据,所有的Table数据都保存在这个目录中,删除表时,元数据与数据都会被删除。Hive的数据模型-托管表(内部表)创建托管表可以直接使用SQL创建,语法与传统数据库类似,如:createtableemp(empnoint,enamestring);默认的分隔符是tab制表符。加载数据到托管表时,Hive把数据移到仓库目录,源文件会被删除。删除一个托管表,它的元数据和数据,会被一起删除。外部表则指向已经在HDFS中存在的数据,可以创建Partition。它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异,因为外部表加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接。Hive的数据模型-外部表创建外部表需要在SQL中添加“EXTERNAL”标识,表明它是外部表,如:createEXTERNALtableemp(empnoint,enamestring);外部表可以创建Partition。外部表加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。删除外部表时,Hive不会碰数据,只会删除元数据。在HiveSelect查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。分区表指的是在创建表时指定的partition的分区空间。Hive的数据模型-分区表将数据组织成分区,可以提高数据的查询速度。一个表可以拥有一个或者多个分区。分区以文件夹的形式单独存在表文件夹的目录下。分区是以字段的形式在表结构中存在。对于每一个表(table)或者分区,Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。Hive的数据模型-桶表组织成桶可以获得更高的查询处理效率。组织成桶可以使取样(sampling)更高效。在Hive中,创建视图时并不把视图物化存储到磁盘上。相反,视图的SELECT语句中只是在执行引用视图的语句时才执行。Hive的数据模型-视图创建视图时并不把视图物化存储到磁盘上。视图的SELECT语句中只是在执行引用视图的语句时才执行。HiveQL是一种类似SQL的语言,它与大部分的SQL语法兼容,但是并不完全支持SQL标准,本节主要介绍Hive常用的HiveQL操作。HiveQL简介HiveQL交互语句建表语句修改语句导入语句插入语句删除语句查询语句查看所有数据库名:showdatabases;查看所有表名:showtables;查看以'ad'开头的表名:showtables'ad*';查看表结构(表名为emp):descemp;交互语句创建普通托管表:createtableemp_tg(idint,namestring);创建普通托管表,并指定文件分隔符:createtableemp_tg(idint,namestring)rowformatdelimitedfieldsterminatedby'\t';创建外部表,同时指定文件路径:createexternaltableemp_wb(idint,namestring)location'/emp';创建分区表:createtableemp_fq(idint,namestring)

partitionedby(citystring);创建桶表前,需要需要设置“hive.enforce.bucketing”属性为true,使Hive能够识别桶:sethive.enforce.bucketing=true;创建桶表:createtableemp_tb(idint,namestring)clusteredby(id)into3buckets;创建视图:createviewview_empasselectid,namefromemp_tg;建表语句修改表名:alter

tableemp_tgrenametoemp_tg_new;增加新列:altertableemp_tg_newaddcolumns(addrstring);修改列名:altertableemp_tg_newchangecolumnaddraddressstring

;修改语句本地数据导入:loaddatalocalinpath'/home/hadoop/emp.txt'overwriteintotableemp;HDFS数据导入:

loaddatainpath'/scott/emp.csv'intotableemp;导入语句插入一条数据:insertintoemp(id,name)values(1001,‘赵子龙’);分区表中插入数据,指明导入的数据的分区(通过子查询导入数据):insertintotableemp_fqpartition(city=‘beijing’)selectempno,enamefromemp1wheredeptno=10;插入语句删除行:deletefromempwhereid=0;丢弃某个表:droptableemp_wb;删除视图:dropviewview_emp;删除分区:altertableemp_fqdroppartition(city=

'beijing');删除语句简单查询:selectid,namefromemp;子查询:selectid,name,cityfromempwherecity=‘beijing’;内连接:selecttb1.*,tb2.*fromtb1jointb2on(tb1.id=tb2.userid);左连接:selecttb1.*,tb2.*fromtb1leftouterjointb2on(tb1.id=tb2.userid);右连接:selecttb1.*,tb2.*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论