我想从数据框写入cassandra,我想在已经存在特定行的情况下排除行(即主键 - 虽然发生了upserts,但我不想更改其他列)使用spark-cassandra连接器。我们有办法做到吗?
感谢!
答案 0 :(得分:2)
您可以使用this pr中引入的ifNotExists WriteConf
选项。
它的工作原理如下:
val writeConf = WriteConf(ifNotExists = true)
rdd.saveToCassandra(keyspaceName, tableName, writeConf = writeConf)
答案 1 :(得分:1)
你可以做到
sparkConf.set("spark.cassandra.output.ifNotExists", "true")
使用此配置
如果partition key and clustering column are same as row which exists in cassandra
:
write will be ignored
别的write will be performed
答案 2 :(得分:0)
Srinu,这一切归结为"在写之前阅读"无论你是否使用Spark。
但是有IF NOT EXISTS
条款:
如果列存在,则会更新。如果没有,则创建该行 存在。使用IF NOT EXISTS仅在行时执行插入 尚不存在。使用IF NOT EXISTS会导致性能下降 与内部使用Paxos相关联。有关Paxos的信息, 请参阅Cassandra 2.1文档或Cassandra 2.0文档。
http://docs.datastax.com/en/cql/3.1/cql/cql_reference/insert_r.html