2016-12-23 45 views
1

我想從數據框寫入cassandra,並且我希望在使用spark-cassandra連接器的情況下排除行(如果某個特定行已經存在)(即主鍵 - 儘管發生了upserts,我不想更改其他列) 。有沒有辦法可以做到這一點?如何使用spark- cassandra驅動程序將行插入到cassandra中(如果它們不存在)?

謝謝。

+1

你可以發佈你期望的數據樣本嗎?解釋不完全清楚。 – maasg

+0

例如,如果我的主鍵是(x,y),那麼當我們向cassandra插入數據框時,我們需要跳過具有相同主鍵的行? – GSR

回答

1

可以使用ifNotExists這是在this pr介紹WriteConf選項。

它的工作原理就像這樣:

val writeConf = WriteConf(ifNotExists = true) 
rdd.saveToCassandra(keyspaceName, tableName, writeConf = writeConf) 
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

+0

感謝您的回覆。是的,我的主要座右銘是遷移數據,性能不是一個標準,所以我正在尋找一種方法來插入C *中不存在的記錄。 – GSR

+1

我正在尋找解決方案如何使用spark-C *驅動程序將數據框寫入C *。 – GSR

相關問題