2012-01-03 73 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