Cassandra - “批量太大”异常

Posted

技术标签:

【中文标题】Cassandra - “批量太大”异常【英文标题】:Cassandra - "Batch is too large" exception 【发布时间】:2021-08-20 06:05:07 【问题描述】:

我们正在使用 Cassandra 批处理语句来持久化数据。我们收到“批量太大”异常。 我了解批量大小的数据超过了批量大小失败阈值。 我需要帮助来计算批次的大小。有什么方法可以找出批量传递的数据的确切大小?

【问题讨论】:

【参考方案1】:

最终用户没有一种简单的方法来计算批次的大小,因为它基于批次中所有突变的序列化大小。

一个复杂的问题是,批量突变可以是INSERTUPDATEDELETE 的任意组合,也可以是列、行或分区的任意组合。

附带说明一下,如果您还没有意识到,与我在 https://community.datastax.com/questions/5246/ 中讨论过的 RDBMS 中的批处理相比,CQL 批处理并不是一种优化。正如我在https://community.datastax.com/articles/2744/ 中解释的那样,CQL 批处理应该只用于使相关分区在非规范化表中保持同步。干杯!

【讨论】:

可以通过计算单个语句的大小来获得批的近似大小,但这取决于特定的驱动程序 谢谢亚历克斯。它内容丰富且有用。我还有另一个问题是现有问题的扩展。我正在尝试使用表中的一个插入语句来保留约 10MB 的数据。表有一个 Map 类型列,它可以有 ~20K 条目。我得到一个例外,“它超过了 32MB 的最大突变大小”。我试图找出 10MB 数据的突变大小如何超过 32MB。有什么方法可以确定连续保存的最大数据大小。

以上是关于Cassandra - “批量太大”异常的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 更新无法正常工作

Cassandra 数据模型

Cassandra 简介

JAVA操作cassandra数据库

Cassandra 分页在并发插入时的行为方式

Spring Boot 1.4:Spring Data Cassandra 1.4.2 与 Cassandra 3.0 不兼容?