eva*_*anv 39 cassandra datastax cassandra-2.0
这是一个超级基本的问题,但它实际上已经困扰了我好几天.有没有一种好方法可以获得COUNT(*)Cassandra中给定表的等价?
我将把数亿行转移到C*进行一些负载测试,我想在通过网络移动大量数据之前至少获得一些ETL作业的行计数.
我最好的想法是基本上用Python循环遍历每一行并自动递增一个计数器.有没有更好的方法来确定(甚至估计)C*表的行大小?我还在Datastax Ops Center周围寻找,看看我是否可以确定那里的行大小.如果可以,我不知道它是如何可能的.
其他人需要count(*)在C*中获得一张桌子吗?如果是这样,你怎么去做呢?
cat*_*aws 46
是的,你可以使用COUNT(*).这是文档.
使用COUNT(*)的SELECT表达式返回与查询匹配的行数.或者,您可以使用COUNT(1)来获得相同的结果.
计算users表中的行数:
Run Code Online (Sandbox Code Playgroud)SELECT COUNT(*) FROM users;
小智 12
您可以使用copy来避免Cassandra超时通常在count(*)上发生
cqlsh -e "copy keyspace.table_name (first_partition_key_name) to '/dev/null'" | sed -n 5p | sed 's/ .*//'
nodetool tablestats 快速获取行估计值(以及其他表格统计信息)非常方便。
nodetool tablestats <keyspace.table> 用于特定表
小智 6
$nodetool settimeout read 360000
cqlsh -e "SELECT COUNT(*) FROM table;" --request-timeout=3600
Run Code Online (Sandbox Code Playgroud)