2013-08-12 42 views
0

我有以下hbase用例: 一個Hbase表,帶有一個行鍵(使用md5散列組合構建)和2個列族。邏輯上,表格存儲句子。該表有數億條記錄。Hbase更新用例

我有一個webapp連接到這個hbase表,並且需要根據一些條件隨機地導出句子。目前,所有這些條件都可以通過使用rowkey來查找。 通常,一個導出只包含幾百個句子。重要的限制是,一旦某些細分受到出口,它們就不應出現在任何後續出口中。

所以我的問題是與此有關 - 我應該如何確保相同的段不會再被導出?

我應該'標記'導出的段,通過更新一個標誌,每次導出後發生?這樣做的缺點是,在查看哪些段滿足我的條件時,我不能僅使用rowkey來標識這些記錄,而且也不能使用該標誌。因此,我需要使用過濾器,而我知道的過程更慢。

有沒有更好的方法呢?

回答

0

誰通過你的行鍵?你能確保他發送獨特的行鍵嗎?

如果您在導出後不需要數據。爲什麼不從hbase表中刪除這個句子呢?

如果你的答案對上述兩個問題都是「否」,那麼你就無法在你的表中保留一個標記。

謝謝。

+0

我結束了使用過濾器,因爲他們似乎運行速度足夠我的用例。我唯一擔心的是,比方說,我有一些行來更新標誌。如果該更新沒有完成(假設需要更新大量行),並且其他一些用戶想要爲相同條件導出數據呢?他會*看到*所有的更新?我正在閱讀[Hbase Acid Semantics](http://hbase.apache.org/acid-semantics.html),其中我看到Hbase被讀取提交:「掃描_必須反映在構建掃描器之前所犯的所有突變」 。這是否意味着我在我的假設中安全? –