簡體   English   中英

掃描 api 中的 HBASE 記錄限制

[英]HBASE Record limit in scan api

使用開始和停止行后,是否有任何java api來限制掃描記錄的數量? 頁面過濾器是一個選項嗎?

您是否嘗試使用setMaxResultSize()

PageFilter 可能不會給出預期的結果,文檔說:

此過濾器不能保證返回給客戶端的結果數量 <= 頁面大小。 這是因為過濾器分別應用於不同的區域服務器。 然而,它通過確保本地永遠不會超過頁面大小來優化單個 HRegions 的掃描。

使用 scan.setLimit(int) 方法

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

設置此掃描的行數限制。 如果返回的行數達到此值,我們將終止掃描。 在所有其他條件(例如 stopRow、過濾器等)之后,將最終測試此條件。

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setCaching(int)可能會幫助你。 setCaching() 用於定義 HBase 在一次 RPC 調用中應返回多少結果。

這個答案適用,如果你想只得到一個單行

如果您使用的是舊版本的 HBase,其中setLimit不可用,您可以使用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);
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM