Cassandra的cqlsh控制台中的操作超时错误
我有一个三个节点的Cassandra集群,并且创建了一个表,该表具有2,000,000多行。
当我select count(*) from userdetails
在cqlsh中执行此()查询时,出现以下错误:
OperationTimedOut:错误= {},last_host = 192.168.1.2
当我运行计数功能以减少行数或限制为50,000时,它可以正常工作。
回答:
count(*)实际上是翻页所有数据。因此,如果select count(*) from
userdetails没有那么多行,将导致没有限制。一些细节在这里:http : //planetcassandra.org/blog/counting-key-in-
cassandra/
您可能要考虑使用Spark自己维护计数,或者,如果您只想要一个棒球场编号,可以从JMX那里获取。
要从JMX中获取数据,可能会有些棘手,具体取决于您的数据模型。要获取分区数,请获取org.apache.cassandra.metrics:type=ColumnFamily,keyspace={{Keyspace}},scope={{Table}},name=EstimatedColumnCountHistogram
mbean并汇总所有90个值(这是nodetool
cfstats输出)。它只会给您sstables中存在的数字,因此要使其更准确,您可以进行刷新或尝试从MemtableColumnsCount
mbean
估计memtables中的数字
对于非常基本的球场编号,您可以从system.size_estimates
列出的所有范围中获取估计的分区数(请注意,这只是一个节点上的编号)。将其乘以节点数,然后除以RF。
以上是 Cassandra的cqlsh控制台中的操作超时错误 的全部内容, 来源链接: utcz.com/qa/401731.html