Cassandra 计算表中的行数

Cassandra 计算表中的行数,cassandra,Cassandra,在Cassandra DB中,我对非常大的表的行计数有问题 简单陈述: SELECT COUNT(*) FROM my.table; 调用超时错误: OperationTimedOut: errors={}, ... 我在~/.cassandra/cqlshrc文件中增加了客户端超时: [connection] client_timeout = 900 语句这次正在运行,并再次调用OperationTimeout错误。如何计算表中的行数?您可以使用拆分标记范围进行多次计算。 Cassand

在Cassandra DB中,我对非常大的表的行计数有问题

简单陈述:

SELECT COUNT(*) FROM my.table;
调用超时错误:

OperationTimedOut: errors={}, ...
我在~/.cassandra/cqlshrc文件中增加了客户端超时:

[connection]
client_timeout = 900

语句这次正在运行,并再次调用OperationTimeout错误。如何计算表中的行数?

您可以使用拆分标记范围进行多次计算。 Cassandra使用的令牌范围为-2^63到+2^63-1。因此,通过拆分此范围,您可以执行如下查询:

select count(*) from my.table where token(partitionKey) > -9223372036854775808 and token(partitionKey) < 0;
select count(*) from my.table where token(partitionKey) >= 0 and token(partitionKey) < 9223372036854775807;
从my.table中选择count(*),其中token(partitionKey)>-9223372036854775808和token(partitionKey)<0;
从my.table中选择count(*),其中token(partitionKey)>=0,token(partitionKey)<9223372036854775807;
将这两个计数相加,就得到了总数。 如果这些查询仍然没有通过,您可以将它们再次拆分为更小的令牌范围


检查一下这个工具,它基本上就是这样做的:

超时可能在服务器端。也许这有帮助?从my.table limit>中选择COUNT(*),例如,通过增加上限来获得记录的实际计数。