cassandra Cassanda cql问题:【批量过大】,【货号】:8704

watbbzwu  于 2022-11-05  发布在  Cassandra
关注(0)|答案(1)|浏览(116)

我在选择查询中遇到以下错误。
{“错误”:{“名称”:“响应错误”,“信息”:“表示来自服务器的错误消息”,“消息”:“批处理太大”,“代码”:8704,“协调器”:“10.29.96.106:9042”}}

7d7tgy0s

7d7tgy0s1#

啊,我明白了;您正在使用开发人员中心。
如果结果大于1000,则显示此错误
是的,这是开发人员中心阻止您运行可能会损害您的集群的查询。

select * from user_request_by_country_by_processworkflow
WHERE created_on <= '2022-01-08T16:19:07+05:30' ALLOW FILTERING;

ALLOW FILTERING是一种强制Cassandra在一个查询中读取多个分区的方法,尽管它是为了警告您不要这样做而设计的。如果您真的需要运行这样的查询,那么您将需要构建一个带有PRIMARY KEY的表,该表专门用于支持这种操作。
在这种情况下,我建议根据时间组件将表数据“分段”,以使分区保持在合理的大小范围内。例如,如果一天使每个分区的行数低于50 k,则主键定义如下所示:

PRIMARY KEY (day,created_on)
WITH CLUSTERING ORDER BY (created_on DESC);

然后,一个有效且被允许的查询将如下所示:

SELECT * FROM user_request_by_country_by_processworkflow
WHERE day=20220108
  AND created_on <= '2022-01-08T16:19:07+05:30';

总而言之:

  • 不要运行多分区查询。
  • 不要使用ALLOW FILTERING
  • 生成表以匹配查询。
  • 请务必使用时段来防止分区无限增长。

相关问题