Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用hector快速计算cassandra行中的列总数_Java_Performance_Cassandra_Counting_Hector - Fatal编程技术网

Java 使用hector快速计算cassandra行中的列总数

Java 使用hector快速计算cassandra行中的列总数,java,performance,cassandra,counting,hector,Java,Performance,Cassandra,Counting,Hector,我想使用客户端计算Cassandra行的总列数。目前,我正在使用CountQuery进行此操作,但对我来说它似乎非常慢。同样,对于一行,只有60k列,它需要将近2秒的时间。我的代码当前如下所示: QueryResult<Integer> qr = HFactory.createCountQuery(ksp, se, se). setColumnFamily("ColumnFamily1"). setKey("RowKey"). setRange(null, n

我想使用客户端计算Cassandra行的总列数。目前,我正在使用
CountQuery
进行此操作,但对我来说它似乎非常慢。同样,对于一行,只有60k列,它需要将近2秒的时间。我的代码当前如下所示:

QueryResult<Integer> qr = HFactory.createCountQuery(ksp, se, se).
    setColumnFamily("ColumnFamily1").
    setKey("RowKey").
    setRange(null, null, 1000000000).execute();
QueryResult qr=HFactory.createCountQuery(ksp、se、se)。
setColumnFamily(“ColumnFamily1”)。
设置键(“行键”)。
setRange(null,null,100000000).execute();
PS:我必须将范围设置为这么高的数字,否则它只计算我在范围内提供的数字的最大值


有什么办法可以改进吗?

在Cassandra中计算列的速度天生就很慢。Cassandra必须遍历整行以返回计数


您可能希望对计数进行反规范化。您可以使用计数器列,每次插入时都会更新该列。

谢谢。我不知道它需要遍历整行。这在过去的4年里有变化吗?我的意思是,现在cassandra是否保留了一些元数据,并且可以快速返回它仍然在所有列上迭代的列数?不,这没有改变。主要原因是跟踪这些信息会减慢写入路径。