在Cassandra中使用用户定义函数时的Readtimeout
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Cassandra中使用用户定义函数时的Readtimeout相关的知识,希望对你有一定的参考价值。
我们在AWS上有一个单节点Cassandra Cluster(Apache),其中包含2个vCPU和大约16 GB RAM。我们有大约28 GB的数据上传到Cassandra。
现在,Cassandra可以通过使用主键的查询正常工作,但是当使用用户定义函数在非主键上使用聚合函数时 - 它会给出超时。
详细说明 - 我们对年份,月份和日期进行了3年数据分区。现在,例如,如果两列是 - Bill_ID和Bill_Amount,我们希望使用UDF通过Bill_ID获得Bill_Amount的总和。
在这里有点困惑,因为我相信如果信息说它收到了1个回复,为什么它会收到超时的消息?为什么我们只是在使用用户定义函数时才会出现超时?
ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 1 responses." info={'received_responses': 1, 'required_responses': 1, 'consistency': 'ONE'}
我们将yaml文件中的读取超时增加到10分钟。
编辑 - 添加查询的屏幕截图。在设置--request-timeout之前显示结果并使用UDF发布。该表有1.5亿行,超过1095个分区仅用于3年的数据 - 主键是年,日和月。
答案
尝试在客户端增加超时,例如cqlsh:
cqlsh --request-timeout = 3600
以上是关于在Cassandra中使用用户定义函数时的Readtimeout的主要内容,如果未能解决你的问题,请参考以下文章
如何使用用户定义的函数获取 cassandra 的 blob 列的大小?
使用 EXECUTE 从 SQL Server 调用用户定义函数时的标量结果不同