hbase之bulkload

需求。如何把hdfs的数据转入hbase? datax?spark?flink?

不不不,直接用hbase自带的命令即可。参考 http://hbase.apache.org/2.2/book.html 

前提。hdfs存储格式为text

hbase数据为 列族 是0 列名是ou_code ou_level

1把数据放到hdfs上去。这个如果你的表存储格式为text直接用存储目录也行

二将文件转化为hfile

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,0:ou_code,0:ou_level -Dimporttsv.bulk.output=/user/devuser/warehouse/cc_test_load_hbase/output jl:test_load /user/devuser/warehouse/cc_test_load_hbase/input/test_load_hbase

说明

importtsv.columns 是hbase的rowkey 列族列名 第一个默认是rowkey

output 不能存在否则报错

jl:test_load hbase名称空间jl和表明test_load 名称空间不能少

/user/devuser/warehouse/cc_test_load_hbase/input/test_load_hbase hdfs文件

注意!!! 不要随便加空格0:ou_code ,0:ou_level例如这里有个空格 他会把后面level 认为是另一个参数 也就是名称空间。会报个名称空间非法错误

然后区分中英空格hbase org.apache.hadoop.hbase.mapreduce.ImportTsv 这里当时搞了个中文空格 linux 看又看不出来 一直报命令没找到还是啥的。

会采用mr的形式将格式转化为hfile 到输出目录

加载数据到hbase

$ bin/hbase org.apache.hadoop.hbase.tool.LoadIncrementalHFiles <hdfs://storefileoutput> <tablename>

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /user/devuser/warehouse/cc_test_load_hbase/output jl:test_load

 

查询HBASE数据,发现数据已经到了

——————————————————————————————————————————————————————————————————————————————————————————

最后说下为啥要用这个命令转化

根据大佬说法。

这个命令是属于直接将hdfs文件转化为hbase的存储文件,不经过hbase的regionserver,不会影响hbase的查询和写入性能。

如果你使用hbase 读hive和写hbase的方法,1会影响hive的读,2会影响hbase的写性能,明显没有上面的好。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值