在java中,我有一个spark数据集(spark structured streaming),其列类型为 java.util.ArrayList<Short>
我想把数据集写在一个cassandra表中,它有一个对应的 list<smallint>
.
每次我在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();
有可能改变这种行为吗?
1条答案
按热度按时间rjee0c151#
要在设置集合的保存模式时保存到cassandra集合,请使用RDDAPI。到目前为止,dataset api似乎还缺少这个。因此,将数据集更改为rdd并使用rdd方法保存到cassandra应该能够为您提供所需的行为。
https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md