我在一个表中导入了1个以上的核心记录,当我选择查询计数(*)时,它给了我错误。我知道这是一个代价高昂的查询,但是,有谁能帮我找到相同的解决方案。
从TABLE1中选择COUNT(*);
错误:OperationTimedOut:错误= {'10.20.30.10':'客户端请求超时。参见Session.execute_async'},last_host = 10.20.30.10
答案 0 :(得分:1)
执行多次研发后,我得到了count(*)问题的解决方案。
步骤:
打开presto控制台http://localhost:8081,您应该在控制台中看到协调器节点和辅助节点。
下载“ presto-cli-0.215-executable.jar”(URL:https://prestodb.io/docs/current/installation/cli.html)并将其重命名为prestocli(获得755许可),然后使用'测试大表的count(*)。 prestocli'表有75个Lakhs记录,当我们在cqlsh中运行时给出错误。 7.1。 CQLSH错误:来自服务器的错误:code = 1200 [协调器节点等待副本节点的响应超时] message =“操作超时-仅收到0个响应。” info = {'received_responses':0,'required_responses':1,'consistency':'ONE'}
[root @ casdb01 bin]#./prestocli --server本地主机:8081 presto>从cassandra.datamart.big_table中选择count(*);
7587418 (1行)
查询20190118_070908_00005_38tiw,已完成,1个节点 拆分:总计1,298,已完成1,298(100.00%) 0:53 [759万行,7.24MB] [142K行/秒,139KB /秒]
特别感谢我遇到的帮助我获得这一结果的团队(Venkatesh Bhat)。
答案 1 :(得分:0)
因此,如果这不是生产系统,那么您似乎已经意识到了。
> cqlsh --request-timeout=3600
SELECT count(*) FROM table1 ALLOW FILTERING;
您的系统正在超时,因为查询成本很高,这就是您的错误所在。您可以延长超时时间来解决此问题,但是如果您的数据集足够大,cassandra有时将无法返回。另外,您可能希望以ONE
的一致性运行查询,以免触发读取压缩,并且查询返回速度更快。当然,它将不那么准确。
您也可以尝试:nodetool cfstats mykeyspace
只是一个估计,但总比没有好。