hive删除hbase数据_干货总结: Hive 数据导入 HBase

业务场景

Hive离线计算好的数据, 需要同步到HBase供在线业务查询.

思路是用 Hbase 自带的 ImportTsv 工具。

Hive 跑批

建表语句, 要用文本格式, 即 Tsv 格式, 分割符可以自己定义

CREATE TABLE IF NOT EXISTS tableA(

rowkey STRING,

...

)

PARTITIONED BY(dt STRING) -- format: 2017-06-01

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

LINES TERMINATED BY '\n'

STORED AS TEXTFILE;

跑批语句, 注意设置不要compress,否则 ImportTsv 工具无法识别

SET hive.exec.compress.output=false;

INSERT OVERWRITE TABLE tableA

PARTITION( tx_date = \"$CALC_DATE\" )

SELECT ..

生成中间的HFile

hbase --config config_dir org.apache.hadoop.hbase.mapreduce.ImportTsv \

-Dmapreduce.job.queuename=queue \

-Dimporttsv.bulk.output=hdfs:///hfile_path \

-Dimporttsv.columns="HBASE_ROW_KEY,column_family:column_name.." \

hbase_namespace:table_name \

hdfs://hive_table_dir

config_dir 是 hbase 的配置目录, 里面包含 hbase-site.xml

这个步骤ImportTsv 会去读取 hive_table_dir 中的文件,并分析 hbase table 的region 分布, 生成对应region的hfile, 放到 hfile_path中

bulkload

hbase --config config_dir org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \

hdfs:///hfile_path \

hbase_namespace:table_name

将上一步的hfile导入hbase table

总结

Hive 表必须是带分隔符的文本格式,而且不能压缩(比如启用了mapreduce的output snappy压缩也不行)

ImportTsv 可以直接一条条插入 hbase,这时 mapper 解析一条, 就插一条, 没有reduce阶段; 相比bulkload, 大批量数据性能不好

bulkload的优点是快,生成的 hfile 直接注册到 region server, 数据对应用立即可见, 没有wal log, 没有flush;如果配置了 hbase 备集群, 需要同时 bulkload 一份过去 (hbase主备同步基于 wal log);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值