2014-02-27 71 views
1

我有一個要求,在作業中使用特定值更新所有用戶。Cassandra批處理選擇和批量更新

我在我的Cassandra數據庫中擁有數百萬的用戶。可以先查詢百萬用戶並進行某種批量更新嗎?或者是否有一些可用於執行這些工作的實現。我正在使用hector API與Cassandra進行交互。什麼是最好的方式來做到這一點?

回答

1

您永遠不想獲取100萬個用戶並將其保留在本地。理想情況下,您想使用範圍查詢遍歷所有這些用戶密鑰。 Hector調用這個RangeSliceQuery。這裏有一個很好的例子:

http://irfannagoo.wordpress.com/2013/02/27/hector-slice-query-options-with-cassandra/

開始和結束鍵使用空並添加這也:

rangeQuery.setRowCount(100)在同一時間取得100行。

在循環內部執行此操作。第一次使用null作爲開始和結束鍵時,您從第一個結果集中獲得的最後一個鍵應該是下一個查詢的開始鍵。而且你繼續這樣分頁。

然後,您可以批量使用批量mutate和更新。

http://hector-client.github.io/hector/source/content/API/core/1.0-1/me/prettyprint/cassandra/service/BatchMutation.html