使用python cassandra驱动程序插入cassandra的最快方法

时间:2017-06-05 05:51:48

标签: python cassandra-3.0

我使用python Cassandra驱动程序将多个条目插入并更新到Cassandra的表中。目前我的代码如下:

cluster = Cluster()
session = cluster.connect('db')
for a in list:
    if bool:
        # calculate b
        session.execute("UPDATE table SET col2 = %s WHERE col1 = %s", (b, a))
    else:
        # calculate b
        session.execute("INSERT INTO table(col1, col2) VALUES(%s, %s)", (a, b))

这种插​​入和更新方法非常慢,因为要插入的列表中的条目数(都是唯一的)非常大。有没有更快的方法呢?

1 个答案:

答案 0 :(得分:0)

通常对于这种情况,您将通过增加对Cassandra的并发写入次数来看到最佳性能。

您可以使用execute_concurrent

使用Datastax Python Cassandra驱动程序执行此操作

根据您的描述,值得注意的是,对于您的情况,UpdateInsert与Cassandra之间没有区别。 (即你可以简单地从你的else子句中为(a,b)的所有值执行insert语句。

您需要创建一个准备好的声明。

不要在for循环中一次执行一次插入,而是考虑预先计算(a,b)对的组作为execute_concurrent的输入;您还可以将生成器或生成器表达式编写为execute_concurrent的输入。

示例:

parameters = ((a, calculate_b(a)) for a in my_list)
execute_concurrent_with_args(my_session, my_prepared_statement, parameters)