在Django Cassandra引擎中读取Cassandra中的超时

时间:2019-03-06 11:22:37

标签: python cassandra cql cqlengine razorsql

嗨,我在python中使用cassandra。我在cassandra中有一个表,其中line_id(uuid)为主键。我大约有2000000条记录(每个分区只有一条记录)。当我想获取记录数时:

NumberPartitionedLine.objects.count()

我收到此错误:

Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'consistency': 'LOCAL_ONE', 'received_responses': 0, 'required_responses': 1}

当我在 razorsql datagrip 中运行查询select count(*) from number_partitioned_line时, 我收到超时错误,无法获取结果。 是什么原因?

1 个答案:

答案 0 :(得分:1)

您正在尝试从200万个分区中读取数据,而在Cassandra中确实不建议这样做。

执行count(*)会给节点增加很多压力,如果节点不受分区键的限制,并且由于每个分区只有一个记录,则无法分区。

在您的情况下,最好使用计数器表-https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCountersConcept.html

您可以在yaml中调整内存分配或增加超时时间,但这只会有助于将问题推迟到以后。