【发布时间】:2020-01-26 23:26:57
【问题描述】:
在 Java 中,我有一个带有 java.util.ArrayList<Short> 类型列的 Spark 数据集(Spark Structured Streaming),我想将数据集写入具有相应 list<smallint> 的 Cassandra 表中。
每次我在 Cassandra 中写入行时,它都会更新现有行,我想自定义 list 的写入行为以控制是否
- 写入的列表将覆盖现有列表或
- 书面列表的内容将被追加到已保存在 Cassandra 中的列表内容中
我在spark-cassandra-connector 源代码中发现了一个类CollectionBehavior,它由CollectionAppend 和CollectionOverwrite 扩展。这似乎正是我正在寻找的东西,但在写信给 Cassandra 时我没有找到使用它的方法。
数据集使用以下方法写入 Cassandra:
dataset.write()
.format("org.apache.spark.sql.cassandra")
.option("table", table)
.option("keyspace", keyspace)
.mode(SaveMode.Append)
.save();
是否可以改变这种行为?
【问题讨论】:
-
Cassandra 旨在实现高写入吞吐量。为此,它使用不可变的 SST 。如此合乎逻辑的 Cassandra 不是这种类型的用例。
标签: apache-spark cassandra spark-cassandra-connector