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

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

【问题讨论】:

    标签: cassandra datastax


    【解决方案1】:

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

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

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

    【讨论】:

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