我是靠谱客的博主 执着果汁,最近开发中收集的这篇文章主要介绍采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE
1.0引入Hbase自带的jar
由于采用CDH6.1的版本,hive直接使用Hbase方法会出现异常,hive采用hbase的方法,故需要将对应Hbase中的数据引用进来。
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-annotations-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-client-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-common-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-endpoint-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-examples-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-external-blockcache-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-hadoop2-compat-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-hadoop-compat-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-http-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-it-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-mapreduce-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-metrics-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-metrics-api-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-procedure-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-protocol-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-protocol-shaded-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-replication-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-resource-bundle-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-rest-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-rsgroup-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-server-2.1.0-cdh6.3.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-shaded-miscellaneous-2.2.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-shaded-netty-2.2.1.jar ;
add jar /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hbase/lib/hbase-shaded-protobuf-2.2.1.jar ;
2.0建Hfile表
我们采用HIVE指定文件存放格式的基本方法,将数据直接插入HIVE表中。HIVE 建表语句为:
create table tmp.ODS_PRODC_CONTRACT_STATE_HFILE(
KEY STRING COMMENT 'HBASE_ROWKEY'
,iid STRING COMMENT '主键'
,pid STRING COMMENT '本次包ID'
,fid STRING COMMENT '本次文件ID'
,upload_date STRING COMMENT '批次日期'
,create_time STRING COMMENT '记录生成时间'
......
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.hbase.HiveHFileOutputFormat'
TBLPROPERTIES ('hfile.family.path' = '/user/hive/warehouse/ods.db/hive-hbase/ODS_PRODC_CONTRACT_STATE_HFILE2/record');
注意:此处的record应该与HBase中的family相同。
insert overwrite table tmp.ODS_PRODC_CONTRACT_STATE_HFILE
SELECT key
,iid
,pid
,fid
,upload_date
,create_time
......
FROM tmp.ods_prodc_contract_state10w order by key
;
插入相关数据之后可以在对应的HDFS中查看相关文件是否存在。
直接查询该表会发现没有相关数据。这里的第一个字段会默认为Hbase的KEY,但是这里的key的名称可以不为key,其他的也可以。还有数据中不允许存在同样的KEY,如果出现同样的KEY会报错。同时KEY的值应当具有顺序,如果顺序不同也会出错。
3.0将数据导入Hbase中
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /user/hive/warehouse/ods.db/hive-hbase/ODS_PRODC_CONTRACT_STATE_HFILE ODS_PRODC_CONTRACT_STATE_HIVE
注意这里的路径应当去掉列族,也就是去掉record。否则会出现无法找到有效列族,导致数据无法录入。
录入数据:
查看数据量
注意:执行加载的指令后,原来HFILE会被转移,再次LOAD会发现没有对应文件。
亲测有效。
最终花费了半天的时间将77亿条HIVE数据迁移到了Hbase中。
最后
以上就是执着果汁为你收集整理的采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE的全部内容,希望文章能够帮你解决采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE采用hive自带的方法生成Hfile,并将上亿大数据量导入HBASE所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复