Cassandra 与批处理更新不一致



我正在使用带有Spark Cassandra Connector的Apache Spark将数百万行写入Cassandra集群。复制因子设置为 3,我使用以下选项在 Spark-submit(YARN 客户端模式(中将写入一致性设置为 ALL:

spark-submit ...
--conf spark.cassandra.output.consistency.level=ALL 
--conf spark.cassandra.output.concurrent.writes=1 
--conf spark.cassandra.output.batch.size.bytes=20000 
...

然后,我编写了另一个 Spark 作业来计算我写入的数据。我设置了新作业的一致性,如下所示:

spark-submit ...
--conf spark.cassandra.input.consistency.level=ONE 
--conf spark.cassandra.input.split.size=50000 
...

从文档中看,如果写入一致性加上读取一致性大于复制因子,则我应该具有一致的读取。

但是我得到以下结果:

  • 每次运行读取作业时都会给我不同的结果(计数(
  • 如果我增加读取作业的一致性级别,我会得到预期的结果

我错过了什么?是否有任何默认设置的秘密配置(例如,如果在写入过程中出现问题,然后降低一致性级别,或类似的东西......(或者我使用的是 Cassandra 的错误版本(它是 2.1.2(,或者 spark-cassandra-connector 用于将数据保存到 Cassandra 的批处理更新是否存在问题(我只是使用"saveToCassandra"方法(?

出了

什么问题?

我确认这是连接器中的一个错误。一致性级别是在单个预准备语句上设置的,并且在我们使用批处理语句时被忽略。按照连接器上的更新进行操作 - 修复程序将包含在下一个错误修复版本中。

最新更新