来自服务器的错误:代码 = 1300 [副本无法执行读取] 消息="操作失败



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

请有什么建议?

来自服务器的错误:code = 1300 [replica(s)无法执行读取] messages ="操作失败 - 接收到0个响应和1个失败" info = {'consentency':'local_one','requilt_responses':1,1,1,1,1,'RECTER_RESPONSES':0,'FAILURES':1}

这很难回答而不看到查询。从错误消息的外观看来,您的WHERE子句过滤器似乎不够限制。卡桑德拉(Cassandra)非常适合运行数千次操作/秒,从而撤回了小结果。但是一个查询50k行吗?没那么多。特别是当行跨多个分区时。

在卡桑德拉(Cassandra)中,您需要设计桌子来支持查询。当您不这样做时,会联系多个节点,一个节点最终会协调操作并构建整个结果设置。当它变得太大(50k)的时间时,这可能是您正在发生的事情。

将查询分解为较小的查询,以确保每个节点都可以完成。做到这一点的好方法是让每个基于密钥的查询是其自己的线程,限制在飞行中的线程数,并使用可听的期货await

字段涉及您的查询。您必须为这些领域索引。例如;

create index target_image_index
   on target_image (field name);

最新更新