如何使用Python有效地将批量数据插入Cassandra?

时间:2016-08-09 13:43:13

标签: python cassandra

我有一个使用Flask构建的Python应用程序,它允许导入许多数据记录(一次只有10k-250k +记录)。现在它插入到Cassandra数据库中,通过一次插入一条记录,如下所示:

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

这个过程非常缓慢。我是否可以使用最佳实践方法来更有效地插入此批量数据?

2 个答案:

答案 0 :(得分:1)

您可以为此使用批处理语句,可以从datastax documentation获得示例和文档。您还可以使用一些童工和/或异步查询。

就最佳做法而言,如果每个批次仅包含一个分区键,则效率更高。这是因为您不希望将节点用作许多不同分区键的协调器,直接联系每个单独节点会更快。

如果每条记录都有不同的分区密钥,那么单个准备好的语句与一些童工可能会更好。

您可能还想考虑使用TokenAware load balancing policy来直接联系相关节点,而不是通过其他节点进行协调。

答案 1 :(得分:1)

最简单的解决方案是从您的数据生成csv文件,并使用COPY命令导入它。这应该适用于多达几百万行。对于更复杂的场景,您可以使用sstableloader命令。