扫描api中的hbase记录限制

jq6vz3qz  于 2021-06-09  发布在  Hbase
关注(0)|答案(4)|浏览(726)

在使用开始行和停止行之后,是否有JavaAPI限制扫描记录的数量?pagefilter是一个选项吗?

exdqitrt

exdqitrt1#

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/scan.html#setcaching(内景)也许能帮你。setcaching()用于定义hbase在一个rpc调用中应返回多少个结果。

68bkxrlz

68bkxrlz2#

如果您只想获得一行,则此答案适用
如果您使用的是旧版本的hbase,其中setlimit不可用,则可以使用stoprow代替startrow的值,并将尾部字节设置为0,以使其包含在文档中:
注意:为了使stoprow包含,添加一个尾随的0字节
举个例子:

byte[] startRow = new byte[] { (byte)0xab, (byte)0xac};
    byte[] stopRow = new byte[startRow.length + 1];
    Array.copy(startRow, 0, stopRow, 0, startRow.length);
    stopRow[stopRow.length - 1] = 0; // inclusive
    Scan scan = new Scan().setStartRow(startRow).setStopRow(stopRow);
niknxzdl

niknxzdl3#

是否尝试使用setmaxresultsize()?
pagefilter可能不会给出预期的结果,文档说:
此筛选器不能保证返回给客户端的结果数<=页面大小。这是因为过滤器分别应用于不同的区域服务器。但是,它确实优化了单个hregion的扫描,确保页面大小在本地永远不会超过。

oo7oh9g9

oo7oh9g94#

使用scan.setlimit(int)方法
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/scan.html#setlimit-内景-
设置此扫描的行数限制。如果返回的行数达到此值,我们将终止扫描。在停止行、筛选器等所有其他条件之后,将最终测试此条件。

相关问题