2016-06-28 92 views
0

我得到csv文件,讀取這些文件並將它們寫入到Cassandra。我這樣做是爲了獲得大量數據(每天大約1000萬行)文件本身相當小(從100行到1000行)檢查數據是否已經存在很多數據

我想要做的是在將數據寫入數據庫之前進行檢查,如果主數據庫我即將插入的鍵已經存在。

我知道我可以用Select count(*) from table where primary key1 = something and key2 is something else來完成。

但是這很慢,我想檢查一個完整的文件,如果它將影響已經在Cassandra中的數據,並且我想(需要)快速。 有沒有辦法實現我想要的? (或類似的東西,比如每批檢查是否會影響行)

+0

你能張貼你的表架構?具體哪個鍵是一個分區,哪一個是聚類(如果有的話)? – yurgis

回答

1

您可以在INSERT語句中使用IF NOT EXIST,在UPDATE語句中使用IF EXIST。性能比計算所有行更好,但與插入相比,沒有檢查,速度慢。 Cassandra必須檢查現有主鍵的所有節點。

文檔的INSERT:https://docs.datastax.com/en/cql/3.1/cql/cql_reference/insert_r.html

和UPDATE: https://docs.datastax.com/en/cql/3.1/cql/cql_reference/update_r.html

+0

這並沒有提供任何反饋哪些項目沒有被正確插入? – Proliges

+0

你會得到一個真實的或假的。創建一個輕量級腳本。您可以爲每行創建一個CQL命令,然後可以用行號記錄該假。 –

+0

它確實很有意義,它確實有效,但我認爲它會減慢速度。如果數據庫中的數字增加,IF NOT EXISTS佔用很多時間。我會牢記這一點,因爲它做我想要的,但有點慢。 – Proliges

相關問題