簡體   English   中英

如何在Hbase Scan中跳過行?

[英]How to skip rows in Hbase Scan?

我正在實現一個簡單的分頁,例如轉到第1頁,第2頁,第3頁,依此類推。

在HBase Book中,我讀到有一個具有構造函數的PageFilter,該構造函數帶有一個參數,該參數指示要返回的行數,但問題是如何跳轉到例如第5頁,直接跳過pageSize * currentPageNumber行? HBase書中給出的示例似乎是序列分頁,即您可以直接轉到第5頁。

有沒有一種方法可以跳過HBase中的行?

提前致謝。

PageFilter不提供任何偏移功能,它就像limit子句一樣工作,當您有足夠的數據時停止掃描操作。

重要的是要說HBase不知道一個表有多少行,您必須掃描整個表才能獲得該計數。 僅此一項,就無法對數據進行分頁(因為您不知道總頁數或每行的偏移量)。 不要認為它有缺點,因為這在您寫入大量數據時會產生巨大的影響。

話雖這么說,但對數百萬(或數十億)行的分頁沒有意義。 您應該以始終提供起點(行鍵)的方式設計表,以便掃描操作可以從此處開始讀取。 您無需知道整個行鍵,開始行和停止行都可以只是前綴(即:如果您的數據自然按照8字節長的時間戳進行排序,則可以使用它來快進前幾個小時,天,月...)。

如果您無法提供任何起點(即使是部分起點),那么一個可能對您有用的非常簡單的解決方案是分批檢索記錄(即:1000個項目的批處理足以容納50頁,可以輕松地處理客戶-側)。 然后,當您到達該批次的最后一頁時,只需將最后一項的行鍵用作下一個掃描操作的起點即可,該操作應檢索另一批1000行,依此類推...。唯一的缺點是直接轉到較高的頁面會比較昂貴,因為您需要先加載以前的批次。

暫無
暫無

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

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