资源描述:
《Hive的数据模型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Hive的数据模型一,数据的存储1)基于HDFS2)没有专门的存储格式(默认情况下,hive中使用制表符,来分割列与列之间的间隔)3)存储结构主要有:数据库,文件,表,视图4)可以直接加载文本文件(.txt文件等)5)创建表时可以指定,hive数据列分割符合行分割符;二,数据表1)Table内部表a.创建一张表不指定位置Createtablet1(tidint,tnamestring,ageint);b.创建一张表并指定位置Createtablet2(tidint,tnamestring,ageint)Location‘/myt
2、able/hive/t2’;c.创建一张表并指定行分割符Createtablet3(tidint,tnamestring,ageint)Rowformatdelimitedfieldsterminatedby‘,’;d.使用查询语句创建表(会转换为MapReduce创建表);Createtablet4asselect*fromstudents;Linux上查看hdfs上的文件(hdfsdfs-cat/user/hive/warehouse/t4/00_00)e.使用查询语句创建表,并指定分割符Createtablet5rowfo
3、rmatdelimitedfieldsterminaredby‘,’asSelect*fromstudents;a.在表中添加一个列(向表中)altertalbet1addcolumns(englishint);e.给表中的列重命名ALTERTABLEtest_changeCHANGEaa1int;1)Partition分区表(为了提高查询的效率)注:什么是分区:patition分区对应数据库中的列密集索引在hive中,表中的一个partition对应表的一个目录,所有的partition的数据都存在对应的目录中;a.表操作1.
4、建立一张分区表Createtablepartitiono_table(pidint,pnamestring)Partitionby(genderstring)Rowformatdelimitedfieldsterminaedby‘,’;2.向新建的表插入数据Insertintotablepartition_talbepartition(gender=’M’)select*fromstudentwheregender=’M’;3.如何检查效率是否提高Explainselect*fromstudentwheregender=’M’;
5、Explainselect*frompatition_talbewheregender=‘M’;2)ExternalTalbe外部表注:指向已经存在HDFS中的的数据,可以创建partition分区;他和内部表元数据的组织上是相同的,而实际数据存储则有较大差距外部表只有一个过程,加载数据和创建表同时完成,且不会移动到数据仓库中,只是与外部数据建立一个连接;当删除一个外部表时仅删除该连接;a.建立一张外部表Step1.在hadoop上建立3个数据文件(假如叫student01,student02,student03)Step2.将
6、3个文件放在hadpoo上的input文件夹下使用命令:hdfsdfs-inputstudent01.txt/inputStep3.创建Externaltableexternal_table(eidint,enamestring,ageint)Rowformatdelimitedfieldsterminatedby‘,’on‘/input’;Step4.删除后查询hdfsdfs-rm/input/student03.txt;Select*fromexternal_table;1)Bucket通表三.视图(类似于表)