spark cassandra连接器:如何更改集合写入行为

hrysbysz  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(367)

在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();

有可能改变这种行为吗?

rjee0c15

rjee0c151#

要在设置集合的保存模式时保存到cassandra集合,请使用RDDAPI。到目前为止,dataset api似乎还缺少这个。因此,将数据集更改为rdd并使用rdd方法保存到cassandra应该能够为您提供所需的行为。
https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md

相关问题