2013-02-06 54 views
3

我似乎無法找到關於如何通過使用RandomPartitioner分割鍵來遍歷列族中的所有行的信息。我看到的完整掃描的常用方法是「使用MapReduce」(這將是一個選項,但現在不適用),並創建一個範圍切片查詢以批量檢索行,使用最後一行更新範圍的下限每個批次後都會看到鑰匙。當你無法保證按鍵順序時,這似乎是一種奇怪的方法,所以我想知道在這種情況下接受的做法是什麼。Cassandra RandomPartitioner和「全表掃描」

要清楚的是,整個列族遍歷事物並不是經常發生的事情,也不是我們對數據庫的標準訪問模式的一部分。它不需要特別快(當然它會很好!)我們只需要偶爾去檢查垃圾等。我們不希望返回的行是一致的快照或類似的東西。

回答

2

使用Hadoop MapReduce將是正確的方式來做到這一點,但我知道這不是一個可行的選項,你現在。所以,你有幾個可能的原因:

  1. 如果你的鑰匙有一定的邏輯順序,可以計算的或者事先另有知道,你可以做一個批處理一串鑰匙的多搞定。

  2. 您可以創建類似於Cassandra的ColumnFamilyInputFormat工作方式的範圍客戶端。

  3. 您可以在另一個庫中執行範圍分段using Hector like this或某些類似的構造。