如何用Hive 往HBase里面插入大量的数据
1个回答
2017-08-21
展开全部
利用选项2,先打通Hive对HBase指定表的全表访问,再建立一个新的空表,把查询出来的数据全部导入到新表当中,以后的所有数据分析操作在新表中完成。说干就干,让我们试一个简单的例子。首先在HBase里面建一个表,名为student,包含id和name两个column.hbaseshellcreate'student','id','name'向表中插入两行数据put'student','row1','id:val','1'put'student','row1','name:val','Tony'put'student','row2','id:val','2'put'student','row2','name:val','Mike'注意:在插入数据的时候一定要指定column(如id:val,name:value)直接使用columnfamily(如id,name)去存数据会导致后面Hive建表的时候有问题。扫描此表,确定数据已经插入scan'student'ROWCOLUMN+CELLrow1column=id:val,timestamp=1384939342989,value=1row1column=name:val,timestamp=1384939365511,value=Tonyrow2column=id:val,timestamp=1384939351444,value=2row2column=name:val,timestamp=1384939379245,value=Mike建立Hive对HBase的访问参考:这里我们使用的是Pivotal公司的PivotalHadoop,hive--auxpath/usr/lib/gphd/hive/lib/hive-hbase-handler-0.11.0-gphd-2.1.1.0.jar,/usr/lib/gphd/hbase/hbase.jar,/usr/lib/gphd/zookeeper/zookeeper.jar,/usr/lib/gphd/hbase/lib/guava-11.0.2.jar-hiveconfhbase.zookeeper.quorum=centos62-3,centos62-4,centos62-5解释一下参数:后面三个jar包主要是Hive访问时需要用到的,hhbase.zookeeper.quorum=centos62-3,centos62-4,centos62-5是指hbase使用的是这三个zookeeper,这样就不用指定hbasemaster了。这个命令运行完以后会打开Hive的输入终端。从Hive建立可以访问HBase的外部表CREATEEXTERNALTABLEstudent(keystring,idint,namestring)STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITHSERDEPROPERTIES("hbase.columns.mapping"="id:val,name:val")TBLPROPERTIES("hbase.table.name"="student");扫描student表,确认访问成功:hive>select*fromstudent;OKrow11Tonyrow22Mike但是此时这个表实际上是一个虚拟表,实际的数据还在HBase中。下面需要在Hive中另建一个结构一样的空表,再把数据导出来。Hive中建立一个新的空表CREATETABLEnew_student(keystring,idINT,nameSTRING)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILE;将数据从HBase中导入到新的Hive表中hive>INSERTOVERWRITETABLEnew_studentSELECT*FROMstudent;确认新表中数据正确:hive>select*fromnew_student;OKrow11Tonyrow22Mike
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询