cassandra - 计算大数据集上cassandra超时的查询

标签 cassandra

这是我的 table

CREATE TABLE star.star_event (
 eventnumber int,
 primarytracks int,
 prodtime double,
 antinucleus int,
 eventfile int,
 eventtime double,
 histfile bigint,
 multiplicity int,
 nabovelb int,
 nbelowlb int,
 nlb int,
 pt double,
 runnumber int,
 vertexx double,
 vertexy double,
 vertexz double,
 PRIMARY KEY (eventnumber, primarytracks, prodtime)
) WITH CLUSTERING ORDER BY (primarytracks ASC, prodtime ASC)

我正在尝试select count(1) from star_event。我知道这是 cassandra 支持的有效查询,至少对于少量数据来说是这样。但对于庞大的数据集,它似乎不起作用。

不断出现错误

ReadTimeout: Error from server: code=1200 [Coordinator node timed out
waiting for replica nodes' responses] message="Operation timed out -
received  only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}

增加了 cassandra.yaml 中的默认 ReadTimeout 值仍然没有成功。有哪些可用的解决方法。

最佳答案

我发现您已经足够了解 cassandra 了;)并且您已经尝试更改 yaml 文件。对于这个问题,您实际上无能为力,因为现在并且仅使用 cassandra(除了可能进一步增加超时并看看会发生什么)

基本上有时数据太大了。所以你必须解决这个问题。有几种方法可以做到这一点:

  1. 通过外部进程执行计数 - Spark 对我来说总是非常有效,但我也经常编写一些自己的工具来处理数据。您可以将此答案用于您自己的计数工具 https://stackoverflow.com/a/23750872/7413631

  2. 尝试重新建模数据 - 但我猜这对您没有好处,因为将表分成多个较小的表似乎不是最佳选择

  3. 如果您只是对使用表统计数据 nodetool cfstats 的大致情况感兴趣,请使用模糊 cassandra 近似(128 以内):http://www.wentnet.com/blog/?p=24

  4. 尝试使用计数器列,基本上对您所做的每个插入进行一次更新,这实际上会增加计数器值。但一旦开始计数,您还需要将其设置为某个初始值。

这完全取决于,如果这个计数是你不经常做的事情,并且可以等待自己的脚本或 Spark 就可以了。如果您必须立即拥有它,我会选择计数器列。

关于cassandra - 计算大数据集上cassandra超时的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43423723/

相关文章:

Cassandra 主键允许重复

用于存储支付信息的 Cassandra

java - RDD 不可序列化 Cassandra/Spark 连接器 java API

cassandra - 我应该如何在集群中复制键空间

java - Cassandra Java 驱动程序在 500 毫秒内从冷到热?

shell - Cassandra cql shell 脚本

node.js - 如何使用 Cassandra 一致性定义类型?

cassandra - Ubuntu 12.04 和 cassandra 安装 - +HeapDumpOnOutOfMemoryError -Xss128k

cassandra - 从cassandra 2.1.4升级到2.1.5

sorting - 在 Cassandra 中按键排序