Cassandra表中

时间:2018-01-15 16:10:54

标签: java cassandra datastax-java-driver

我很惊讶以前没有提出这个问题。

假设我们在cassandra中有一个巨大的表,我们需要在其中获得估计的行数(不精确,只是近似)。

显然简单select count(*) from table效率不高,可能需要花费很多时间。我们需要一些肮脏而快速的东西。

Datastax博客建议the following

  

我不关心确切的数字,我可以估算一下吗?

     

因为Cassandra知道每个SSTable中有多少行   有可能得到一个估计。 'nodetool cfstats'输出告诉你   这些计数在“密钥数(估计)”行中。这是总和   每个SStable中的行数(由于使用了索引而再次近似)   但默认情况下不能超过128。)

我的问题:我们可以使用DataStax Enterprise Java driver执行相同的操作吗?

P.S。我无法更改表结构或其他任何内容。考虑我使用遗留架构。换句话说,我对添加计数器或其他特殊字段等变通方法不感兴趣。

1 个答案:

答案 0 :(得分:6)

Cassandra也通过JMX暴露了近似计数(从“nodetool cfstats”获得)。代码可以挂钩到此JMX度量标准,以编程方式获取计数。

  

EstimatedPartitionCount Gauge大约中的键数   表

 {
    "type": "READ",
    "mbean": "org.apache.cassandra.metrics:type=Table,keyspace=*,scope=*,name=*",
    "attribute": "Count"
  }

以下是有关所有JMX指标的link