扫描api中的HBASE记录限制

时间:2014-05-19 23:03:42

标签: hbase limit database-scan

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

4 个答案:

答案 0 :(得分:1)

您是否尝试使用setMaxResultSize()

PageFilter可能无法给出预期的结果,文档说:

  

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

答案 1 :(得分:0)

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setCaching(int)也许可以帮到你。 setCaching()用于定义HBase在一次RPC调用中应返回的结果数。

答案 2 :(得分:0)

使用scan.setLimit(int)方法

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

  

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

答案 3 :(得分:0)

如果您只想获得

,则此答案适用

如果您使用的HBase较旧版本(其中setLimit不可用),则可以使用stopRow而不是为其提供与startRow相同的值,并将尾随字节集添加到documentation中的零以使其具有包容性:

注意:为了使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);