在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年的数据 - 主键是年,日和月。

Screenshot of the query used

答案

尝试在客户端增加超时,例如cqlsh:

cqlsh --request-timeout = 3600

以上是关于在Cassandra中使用用户定义函数时的Readtimeout的主要内容,如果未能解决你的问题,请参考以下文章

如何使用用户定义的函数获取 cassandra 的 blob 列的大小?

cassandra-stress 压测使用介绍

Cassandra 分页在并发插入时的行为方式

使用 EXECUTE 从 SQL Server 调用用户定义函数时的标量结果不同

Cassandra 修复 - 在启用 Leveled Compaction 的情况下进行增量修复时的大量流式传输

Cassandra 中的用户定义类型 (UDT) 行为