hfile到hbase

去年年底留下的一个问题,我当时查找错误时,就觉得这个问题肯定是我使用的方法不对,绝对不是hbase的bug。可当时大家都要保证稳定过年,所以也就没有找人帮我来查找这个问题。


具体是我将大文件通过写入hfile,然后再load到hbase中。但是我发现hbase中几乎没什么key value了。count得到的数目是对的,但是通过key找value时是找不到的。而我反查hfile也没发现有问题。


那个时候就把相应的一些任务转到读mapreduce任务了。

前几天两位同事一起发现了原因。具体是因为,我当时写入hfile文件时,由于我没有定义partitiner,所以出现了一个hfile的part文件中的key和另外一个hfilepart文件中的key出现交叉现象。这个时候,去hbase查找时,只有特别少的一部分可以查找,因为hbase默认是按照key排序的,如果开始一block找不到,就不会再去找了。


哎,看来还是我对hadoop的东西不了解导致的。其实当时我查找时已经发现了这个问题,发现不同的hfile文件中间key会交叉。但是我缺少进一步的认识,所以想不到那么多。


按照同事的说法,我把key在partitioner进行了排序。然后就好了。哎,真是TMD啊。


其实,我知道原来的key从mapper输出后不会是排序的,可是在生成hfile文件时,还有一个keyvaluereducer.class调用,我还以为这里面会进行排序的。看来我还是没有对reducer理解正确,reducer会处理相同的key进行merge,但是它无法控制都是那些key到一个reducer,所以出来的文件key会出现交叉。


所以说,要好好看看hadoop,要好好理解和思考。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值