2015-05-08 111 views
0

我對hbase相當陌生,想象我們想爲每個類別每天彙總獨特的文檔數量。hbase,是否可以使用前綴對行鍵進行計數?

第一個想法是有點像下面

表名:年月日 行鍵:category_docid 列族:凡是似乎以後使用,

在這種情況下,我想我可以用rowkey開始掃描前綴和結束前綴,然後計算它們的鍵。

但有幾個問題 1.掃描似乎是重計數操作,因爲我必須掃描所有的結果數組,並自行增加。 2.類別不斷變化,如果有可能在SQL中做'group by',但是我還沒有找到,現在會好得多。

您對這種方法有什麼看法,或者還有其他更好的主意嗎?

+0

可以考慮添加一個額外的密鑰,以保持您感興趣的密鑰模式的計數。因此,您可以執行單個GET操作而不是計數操作/掃描操作。 –

回答

0

HBase不提供實時表計數,它必須執行全表掃描來計數行,這很慢。

爲了實時計數,您必須在表中實現自己的計數器,並在插入新行時增加它們(或在刪除行時將其減少)。 HBase能夠完美處理每秒大量的寫入操作,這是他最強的一點。您甚至可以通過使用多個系列/列與範圍計數器(每小時,每天,每週,每月,每年)來結合生存時間自動修剪舊記錄。這取決於你如何實現它:)

請參閱(this working JAVA example)從HBase book source code

0

設置您的掃描對象上的時間範圍過濾器以及rowkey前綴過濾器將幫助您實現您的任務。

相關問題