Hbase 学习(四) hbase客户端设置缓存优化查询

时间:2021-09-29 23:10:13
我们在用hbase的api对hbase进行scan操作的时候,可以设置caching和batch来提交查询效率,那它们之间的关系是啥样的呢,我们又应该如何去设置?

首先是我们的客户端代码。

Hbase 学习(四) hbase客户端设置缓存优化查询

当caching和batch都为1的时候,我们要返回10行具有20列的记录,就要进行201次RPC,因为每一列都作为一个单独的Result来返回,这样是我们不可以接受的。

Hbase 学习(四) hbase客户端设置缓存优化查询

下面展示的是当batch=3,caching=6时候的图,是一次RPCs的传递的数据。

Hbase 学习(四) hbase客户端设置缓存优化查询

接着我们继续看下图

Hbase 学习(四) hbase客户端设置缓存优化查询

一次查询20条记录的话,只需要3次RPCs,列数在10列以内的数据,取20条,20/10即可,为什么是3呢,因为还有一次RPC是用来确认的。

有个公式RPCs = (Rows * Cols per Row) / Min(Cols per Row, Batch Size)/ Scanner Caching 。

这就好说啦,这样我们就可以用来优化我们的scan查询了,在查询的时候,按照查询的列数动态设置batch,如果全查,则根据自己所有的表的大小设置一个折中的数值,caching就和分页的值一样就行。