hbase在scan操作中cache,batch属性

使用java操作hbase的scan操作代码级别的中调用有这么一个api:  

        ResultScanner result = table.getScanner(scan); 这个  ResultScanner是迭代器,迭代器中每一个元素是一个result类,看一下result类的实现,发现他有一个方法publicKeyValue[] raw(),这个方法返回一个keyValue类的数组,ok继续看这个keyValue类的实现keyValue继承了cell这个接口,cell又是什么那,来看一下源码中的英文注释,有兴趣的亲子去翻译一下,大概的意思是:他是hbase基本存储单元,由以下几个属性组成:

1) row

2) column family
3) column qualifier
4) timestamp
5) type
6) MVCC version
7) value

这几个字段的是啥意思就不再解释了,可以参考别的资料去学习,这里主要就是得到row,value这就是对应row的对应值,这里发现只能去到column family获取不到column,不知道是不是我没看明白代码。综上看出来其实scan操作返回的就是一个迭代器,迭代器中存放的是一个result类,这个类Cell的数组,通过数组中的每一个cell可以得到数据

         到这里我们就要说一下,hbase是怎么确定一次从客户端拿到多少数据的那,也就是说一次拿几行的数据,这些行中又有多少column的数据那?

这是用cache,batch来计算的,这两个值在hbase的配置文件中都能够配置,简明地说cache是hbase客户端做的一个缓存,batch是server端的一个缓存;scan操作做操作的时候,hbase客户端是通过rpc去hbase server端取数据的,一次rpc中能够获取的行数就是cache的值,server 端一次能够传送的column的数量就是batch,据一个例子吧:假设cache =2 ,batch = 10,要查询的数据在server端一共有10行数据,20个column,也就是由200cell需要取得,那么我们一次rpc能够处理两行的数据,每次能够获取10个column,也就是能够去到20个cell,一共200个cell,就需要10次rpc取完毕,最后再有一次rpc确认scan结束。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值