如何使用Java客户端驱动程序在Cassandra中获取行计数估计 [英] How to obtain row count estimates in in Cassandra using the Java client driver

查看:0
本文介绍了如何使用Java客户端驱动程序在Cassandra中获取行计数估计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我唯一可用的是com.datastax.driver.core.Session,有没有办法从远程服务器获取Cassandra表中的行数的粗略估计?执行计数的成本太高。我知道我可以通过JMX获得分区计数估计,但我不愿假设JMX has been configured。(我认为结果必须乘以节点数,再除以复制系数。)理想情况下,评估结果也应该包括群集键,但一切都摆在桌面上。

我也看到了size_estimates table in the system keyspace,但我没有看到太多关于它的文档。是否定期刷新或管理员是否需要运行类似nodetool flush的操作?

除了不包括群集键之外,将其用作非常粗略的估计还有什么错?

select sum(partitions_count)
from system.size_estimates
where keyspace_name='keyspace' and table_name='table';

推荐答案

计时器每5分钟更新一次大小估计值(可使用-Dcassandra.size_recorder_interval覆盖)。

这是一个非常粗略的估计,但您可以从分区键的标记中找到它所属的范围以及从该表中拉出的每个副本上的范围(它的本地复制对于每个节点来说是唯一的,而不是全局的),并划分出分区大小和分区数量,从而得到一个非常模糊的分区大小的近似估计。甚至在写入此表之前,在此路径中就出现了如此多的假设和平均。卡桑德拉在效率方面的错误是以精确度为代价的,更多的是用于一般用途,如火花批量阅读,所以对此持保留态度。

它现在没有用处,但展望未来的4.0冻结后,将有许多新的虚表,可能包括那些根据需要获得关于特定分区和分区范围的准确统计数据的表。

这篇关于如何使用Java客户端驱动程序在Cassandra中获取行计数估计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆