1

使用开始和停止行后是否有任何java api来限制扫描记录的数量?页面过滤器是一个选项吗?

4

4 回答 4

1

您是否尝试使用setMaxResultSize()

文档说,PageFilter 可能不会给出预期的结果:

此过滤器不能保证返回给客户端的结果数量 <= 页面大小。这是因为过滤器在不同的区域服务器上单独应用。但是,它确实通过确保本地永远不会超出页面大小来优化单个 HRegions 的扫描。

于 2014-05-20T09:47:20.593 回答
1

使用 scan.setLimit(int) 方法

https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setLimit-int-

设置此扫描的行数限制。如果返回的行数达到此值,我们将终止扫描。在所有其他条件(如 stopRow、过滤器等)之后,最后将测试此条件。

于 2018-07-18T15:33:44.617 回答
0

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setCaching(int)可能会帮助你。setCaching() 用于定义 HBase 在一次 RPC 调用中应该返回多少结果。

于 2015-02-07T00:36:13.243 回答
0

如果您只想获得单行,则此答案适用

如果您使用的是setLimit不可用的旧版 HBase,则可以使用stopRow代替给它与startRow相同的值,并添加一个尾随字节设置为零以使其具有包容性,来自文档

注意:为了使 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);
    
于 2020-08-11T09:02:43.900 回答