这是我的表
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'}
增加ReadTimeout
中的默认cassandra.yaml
值仍然没有运气。有哪些可用的解决方法。
答案 0 :(得分:2)
我看到你用cassandra知道你的方式;)你已经尝试过更改yaml文件了。你现在并没有真正做到这一点,只能使用cassandra(除了可能进一步增加超时,看看会发生什么)
基本上有时数据只是很大。所以你必须解决这个问题。有几种方法可以做到这一点:
通过外部进程执行计数 - spark总是对我有用,但我也编写了一些自己的工具来经常处理数据。您可以将此答案用于自己的计数工具https://stackoverflow.com/a/23750872/7413631
尝试重新构建数据 - 但是这个对你没有好处我猜是因为将表格分成多个较小的数据似乎不是最佳的
使用模糊cassandra近似值(在128内)如果您只是对使用表统计信息nodetool cfstats
感兴趣球场,http://www.wentnet.com/blog/?p=24
尝试使用计数器列,对于您实际增加计数器值的每个插入,基本上还有一个更新。但是,一旦开始计数,你还需要将它设置为某个初始值。
这一切都取决于,如果这个计数是你不经常做的事情,可以等待自己的脚本或火花是o.k.如果你必须立即拥有它,我会选择计数器列。