我是 Cassandra 的新手,在本地机器上的 Cassandra 3 节点集群上运行用户定义的聚合。问题是,当我在较小的数据集上运行此聚合时,结果很好并且符合预期。
但是当数据太大时,查询失败并出现错误 -
OperationTimedOut: errors={'127.0.0.1': '客户端请求超时。见 Session.execute_async'}, last_host=127.0.0.1
我发现了与我的问题类似的以下问题,但没有得到解答。查找其他问题的链接 -
Cassandra CQLSH OperationTimedOut 错误=客户端请求超时。请参阅 Session.execute[_async](超时)
我已经修改了 cassandra.yaml 并且时间限制是 -
read_request_timeout_in_ms: 555000
range_request_timeout_in_ms: 10000
write_request_timeout_in_ms: 2000
counter_write_request_timeout_in_ms: 5000
cas_contention_timeout_in_ms: 1000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 10000
但这对我没有帮助。请指导这些时间的正确配置是什么,以便在没有查询超时的情况下在大型数据集上运行相同的查询。
聚合代码 -
CREATE FUNCTION countSessions(datamap map<text,int>,host text)
RETURNS NULL ON NULL INPUT
RETURNS map<text, int>
LANGUAGE java as
'
Integer countValue = (Integer)datamap.get(host);
if(countValue == null) {
countValue = 1;
} else {
countValue++;
} datamap.put(host,countValue);
return datamap;
';
CREATE OR REPLACE AGGREGATE hostaggregate(text)
SFUNC countSessions
STYPE map<text, int>
INITCOND {};
谢谢并恭祝安康,
维巴夫
PS - 如果有人选择否决这个问题,请在评论中提及相同的原因。