0

嗨,我在 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}

select count(*) from number_partitioned_line同样,当我在razorsqldatagrip中运行查询时,出现超时错误并且无法获得结果。什么原因?

4

1 回答 1

1

您正在尝试从 200 万个分区中读取数据,这在 Cassandra 中确实不推荐。

如果它不受分区键的限制,并且在您的情况下您不能通过分区限制,因为每个分区只有一个记录,那么执行 count(*) 将对节点增加很大的压力。

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

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

于 2019-03-06T12:16:26.737 回答