2012-01-03 59 views
6

我想使用Hector客戶端計算Cassandra行的列總數。目前我正在用CountQuery這樣做,但對我來說似乎很慢。對於一排,只有60k列需要將近2秒。我的代碼目前看起來是這樣的:用hector計算cassandra行中列的總數的更快方法

QueryResult<Integer> qr = HFactory.createCountQuery(ksp, se, se). 
    setColumnFamily("ColumnFamily1"). 
    setKey("RowKey"). 
    setRange(null, null, 1000000000).execute(); 

PS:我要的範圍內設定這麼高的數字,否則只能算作我最大。到我在範圍內提供的數字。

任何想法,我可以改善這一點?

回答

8

在卡桑德拉計數柱天生就很慢。 Cassandra必須迭代整行才能返回計數。

您可能想要非規格化計數。您可以使用每次插入時更新的計數器列。

+0

謝謝。我不知道它需要遍歷整行。 – High6 2012-01-03 19:55:46

+0

過去4年有這個變化嗎?我的意思是,現在cassandra保留了一些元數據,並可以快速返回它仍然遍歷所有列的列數? – Peter 2016-09-24 04:47:07

+0

不,這沒有改變。主要原因是跟蹤信息會減慢寫入路徑。 – psanford 2016-09-24 20:19:41