hbase的一些使用经验

HBase读写操作

Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile -> 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上,使得原先1个Region的压力得以分流到2个Region上由此过程可知,HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。

client->zookeeper->.ROOT->.META-> 用户数据表zookeeper记录了.ROOT的路径信息(root只有一个region),.ROOT里记录了.META的region信息, (.META可能有多个region),.META里面记录了region的信息。

idea导出代码为jar文件

这里写图片描述
选empty下面一个
这里写图片描述
这里不要选Main Class 不然就报错了,直接OK
这里写图片描述
去掉所有的JAR
这里写图片描述

这里写图片描述

修改eclipse编码格式

如果HBase里面存储了中文了,你想打印出表里的东西,eclipse默认是GBK的,打印出来中文是乱码,所以要修改eclipse的编码格式
这里写图片描述
具体的java操作HBase的 API可以看我的另外一篇博客。

ResultScanner类的几个奇怪的问题

当我们得到查询结果后,按照下面的方式可以得到每一条,同时如果resultScanner查询结果为空的话,直接跳过,也不会报错。

public void printallRecoder(ResultScanner resultScanner) {
        for (Iterator<Result> it = resultScanner.iterator(); it.hasNext();) {
            Result result = it.next();
            Cell[] cells = result.rawCells();
            printRecoder(cells);
        }
    }

但是按照下面的方法就会跳过结果的第一行,从第2行开始打印。具体原因我也不懂。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值