欢迎来到天天文库
浏览记录
ID:42181942
大小:291.44 KB
页数:63页
时间:2019-09-09
《HIVE从入门到精通》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、HIVE从入门到精通目录HIVE介绍1二、hive的安装和配置7三、hive与hbase集成13四、HIVE创建目录和表15六、HIVE查询22七、HIVE视图28八、索引29九、hiveschema30十、Hivejoin32十一、Hive基本语法36十二、Hive操作语句39十三、数据操作语句50Hive优化55HIVE介绍主要介绍背景及体系结构1背景应用于工业的商务智能收集分析所需的数据集正在大量增长,使得传统的数据仓库解决方案变得过于昂贵。Hadoop是一个流行的开源map-reduce实现,用于像yah
2、oo,Facebook一类的公司。来存储和处理商用硬件上的大范围数据集。然而map-reduce程序模型还是处于很低级别,即需要开发者来书写客户程序,这些程序往往难于维护与重用。用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的hql查询。hive也叫做数据仓库。2定义Hive是基于Hadoop(HDFS,MapReduce)的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。本质是将
3、SQL转换为MapReduce程序。3体系结构Hive本身建立在Hadoop的体系结构上,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行。并按照该计划生成MapReduce任务后交给Hadoop集群处理,Hive的体系结构如图1-1所示:图1-1Hive的体系结构4Hive的数据存储Hive的存储是建立在Hadoop文件系统之上的。Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以自由地组织Hive中的表,只需要在创建表的时候
4、告诉Hive数据中的列分隔符和行分隔符就可以解析数据了。Hive中主要包含四类数据模型:表(Table)、外部表(ExternalTable)、分区(Partition)和桶(Bucket)。Hive中的表和数据库中的表在概念上是类似的,每个表在Hive中都有一个对应的存储目录。例如一个表pokes在HDFS中的路径为/warehouse/pokes,其中/warehouse是hive-site.xml配置文件中由${hive.metastore.warehouse.dir}指定的数据仓库的目录。Hive中每个分
5、区都对应数据库中相应分区列的一个索引,但是分区的组织方式和传统关系型数据库不同。在Hive中,表中的一个分区对应表下的一个目录,所有分区的数据都存储在对应的目录中。例如,图1-2中htable表中包含year、month和day三个分区,分别对应三个目录:对于year=2012,month=01,day=01的HDFS子目录为:/warehouse/htable/year=2012/month=01/day=01;对于year=2012,month=02,day=14的HDFS子目录为:/warehouse/ht
6、able/year=2012/month=02/day=14;桶对指定列进行哈希计算时,根据哈希值切分数据,每个桶对应一个文件。例如,将图1-2中htable表中属性列Uniqueid列分散到32个桶中,首先要对Uniqueid进行hash计算,对应哈希值为0的桶写入HDFS的目录为:/warehouse/htable/year=2012/month=01/day=01/part-0;对应哈希值为1的桶写入HDFS的目录为:/warehouse/htable/year=2012/month=01/day=01/p
7、art-1。图1-2Hive数据存储一、hive功能简介功能简介PARTITIONEDBY关键字为表格分区4.通过CLUSTEREDBY关键字将PATITION划分成BUCKET5.定义每条记录的存储格式,包括:字段之间如何分隔;集合字段中的元素如何分隔;Map的key值如何分隔6.指定存储格式为Hadoop的SequenceFile(2)查看表结构DESCRIBEtablename;(3)修改表格为表格添加字段ALTERTABLEpokesADDCOLUMNS(new_colINT);(4)删除表格DROPTA
8、BLEtablename;DML(1)、导入数据导入操作,只是将文件复制到对应的表格目录中,并不会对文档的schema进行校验从HDFS导入LOADDATAINPATH'data.txt'INTOTABLEpage_viewPARTITION(date='2008-06-08',country='US')从本地导入,并覆盖原数据LOADDATALOCALINPATH'da
此文档下载收益归作者所有