服务器错误:code=1300 [副本无法执行读取] message="操作失败

问题描述 投票:0回答:3

使用 Python 从 Cassandra 获取 50k 记录时出现以下错误。

请问有什么建议吗?

来自服务器的错误:code=1300 [副本执行读取失败] message="操作失败 - 收到 0 个响应和 1 个失败" info={'consistency': 'LOCAL_ONE', 'required_responses': 1, 'received_responses ':0,'失败':1}

cassandra cassandra-3.0
3个回答
2
投票

如果没有看到您的询问,这个问题很难回答。 从错误消息的外观来看,您的

WHERE
子句过滤器似乎限制不够。 Cassandra 非常适合每秒运行数千次操作,拉回小型结果集。 但是一次查询 50k 行? 没那么多。 特别是当行跨多个分区时。

在 Cassandra 中,您需要设计表来支持您的查询。 如果您不这样做,则会联系多个节点,最终由一个节点协调操作并自行构建整个结果集。 当它变得太大(50k)时,它会超时,这很可能发生在你身上。

将查询分解为更小的查询,以确保每个查询都可以由单个节点完成。 做到这一点的一个好方法是让每个基于键的查询都有自己的线程,限制运行中的线程数量,并使用可监听的 future

await
它们。


0
投票

哪些字段与您的查询有关。您必须对这些区域建立索引。 例如;

create index target_image_index
   on target_image (field name);

0
投票

如果有人遇到同样的问题,我在我的 datastax astraDb 数据库中发现我只需要稍等一下。我猜这个命令可以工作,但不会告诉你它什么时候完成创建索引,如果你正在查询它并且它还没有启动,则返回一个错误

© www.soinside.com 2019 - 2024. All rights reserved.