【问题标题】:Batch insert overflow批量插入溢出
【发布时间】:2018-04-10 10:43:12
【问题描述】:

我正在使用 Cassandra 3.10,并尝试通过每个查询都有一个表来遵循最佳实践,因此我使用 Batch insert proncipal 作为单个事务插入多个表但是我在 cassandra 日志中收到以下错误。

[zed.payment, zed.trade_party_b_ref, zed.trade_product_type, zed.trade, zed.fx_variance_swap, zed.trade_party_a_ref, zed.trade_party_b_trade_id, zed.market_value] 的批次大小为 5.926KiB,超过了 5.000KiB 的指定阈值0.926KiB。

【问题讨论】:

标签: cassandra datastax-java-driver


【解决方案1】:

日志说当限制为 5MB 时,您正在发送一批将近 6MB 的数据。

您应该发送较小批量的数据以避免超出批量大小限制。

您也可以在 cassandra.yaml 中更改批量大小限制,但我不建议更改它。

【讨论】:

    【解决方案2】:

    感谢您的信息,cassandra.yaml 中的参数是

    在任何超过此值的多分区批量大小上记录警告。默认每批 5kb。

    应谨慎增加此阈值的大小,因为它可能导致节点不稳定。

    batch_size_warn_threshold_in_kb:5 它以 KB 为单位,而不是 MB,所以我的批处理语句实际上是 6KB 而不是 6MB。 在与 Oracle 合作 30 年后,这是我第一次进入 Cassandra,所以我尝试遵循为每个查询创建一个单独的表的准则,因此我有一个必须以多达 8 种不同方式查询的金融交易表有8张桌子。这意味着必须分批向表中插入,以在 Oracle 中创建单个事务。八个的主表有大量的兄弟表,它们也必须包含在批处理中,所以这是我的观点: 如果 cassandra 不支持事务但依赖批处理功能来实现相同的效果,则它不能对批处理的大小施加限制。如果这不可能,那么 cassandra 真的仅限于具有非常简单数据结构的应用程序。

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2015-06-16
      • 2012-02-16
      • 2023-04-09
      • 2020-10-24
      相关资源
      最近更新 更多