我有一个使用Flask构建的Python应用程序,它允许导入许多数据记录(一次只有10k-250k +记录)。现在它插入到Cassandra数据库中,通过一次插入一条记录,如下所示:
for transaction in transactions:
self.transaction_table.insert_record(transaction)
这个过程非常缓慢。我是否可以使用最佳实践方法来更有效地插入此批量数据?
答案 0 :(得分:1)
您可以为此使用批处理语句,可以从datastax documentation获得示例和文档。您还可以使用一些童工和/或异步查询。
就最佳做法而言,如果每个批次仅包含一个分区键,则效率更高。这是因为您不希望将节点用作许多不同分区键的协调器,直接联系每个单独节点会更快。
如果每条记录都有不同的分区密钥,那么单个准备好的语句与一些童工可能会更好。
您可能还想考虑使用TokenAware load balancing policy来直接联系相关节点,而不是通过其他节点进行协调。
答案 1 :(得分:1)
最简单的解决方案是从您的数据生成csv文件,并使用COPY命令导入它。这应该适用于多达几百万行。对于更复杂的场景,您可以使用sstableloader命令。