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=EstimatedColumnCountHistogrammbean并汇总所有90个值(这是nodetool

cfstats输出)。它只会给您sstables中存在的数字,因此要使其更准确,您可以进行刷新或尝试从MemtableColumnsCountmbean

估计memtables中的数字

对于非常基本的球场编号,您可以从system.size_estimates列出的所有范围中获取估计的分区数(请注意,这只是一个节点上的编号)。将其乘以节点数,然后除以RF。

以上是 Cassandra的cqlsh控制台中的操作超时错误 的全部内容, 来源链接: utcz.com/qa/401731.html

回到顶部