我正在使用Cassandra 3.10,并试图遵循最佳实践,即每个查询都有一个表,因此我使用批插入代号将多个表作为一个事务插入,但是我在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。
发布于 2017-10-29 17:22:28
日志显示,当限制为5MB时,您发送的批处理大小接近6MB。
您应该发送较小的批次数据,以避免超过该批次大小限制。
您还可以在cassandra.yaml中更改批处理大小限制,但我不建议您更改它。
发布于 2017-11-03 20:17:41
感谢您提供的信息,cassandra.yaml中的参数是
在超过此值的任何多分区批处理大小上记录警告。默认情况下,每批5kb。
增加此阈值的大小时应格外小心,因为它可能导致节点不稳定。
batch_size_warn_threshold_in_kb: 5,单位是KB,而不是MB,所以我的批处理语句实际上是6KB而不是6MB。在与Oracle合作30年后,这是我第一次进入Cassandra,因此我尝试遵循每个查询都有一个单独的表的指导方针,因此如果我有一个必须以最多8种不同方式查询的金融贸易表,我就有8个表。这意味着必须在批处理中插入到表中,才能在Oracle中创建单个事务。八个主表中有大量的同级表,这些同级表也必须包含在批处理中,所以这里是我的观点:如果cassandra不支持事务,但依赖批处理功能来实现同样的效果,它就不能对批处理的大小施加限制。如果这是不可能的,那么cassandra实际上仅限于数据结构非常简单的应用程序。
https://stackoverflow.com/questions/46998546
复制相似问题