簡體   English   中英

如何使用Python將批量數據有效地插入Cassandra?

[英]How to efficiently insert bulk data into Cassandra using Python?

我有一個使用Flask構建的Python應用程序,該應用程序允許導入許多數據記錄(一次記錄10k-250k +記錄中的任何位置)。 現在,它通過一次插入一個記錄,將其插入Cassandra數據庫中:

for transaction in transactions:
    self.transaction_table.insert_record(transaction)

這個過程非常慢。 我是否可以使用一種最佳實踐方法來更有效地插入此批量數據?

您可以為此使用批處理語句,可以從datastax文檔中找到示例和文檔 您還可以在此之上使用一些童工和/或異步查詢。

在最佳實踐方面,如果每個批次僅包含一個分區鍵 ,則效率更高。 這是因為您不希望將節點用作許多不同分區鍵的協調器,因此直接聯系每個單個節點會更快。

如果每個記錄都具有不同的分區鍵,則可以使用帶有一些童工的單個准備好的語句來達到更好的效果。

您可能還需要考慮使用TokenAware負載平衡策略 ,該策略允許直接聯系相關節點,而不是通過另一個節點進行協調。

最簡單的解決方案是從您的數據生成csv文件,然后使用COPY命令將其導入。 對於多達幾百萬行,這應該很好。 對於更復雜的方案,可以使用sstableloader命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM