使用python将大列表插入Cassandra

时间:2017-03-13 14:27:36

标签: python list python-3.x cassandra

我在使用python将大列表插入Cassandra时遇到问题。我有一个3200字符串的列表,我想在Cassandra中保存:

def code_char():
    letter = ord(input("Enter letter to be moved"))
    shift = int(input("Enter degree of shift"))

    if (letter >= 65) and (letter <= 90):
        letter += shift
        while (letter > 90):
            letter -= 26
    elif (letter >= 97) and (letter <= 122):
        letter += shift
        while letter > 122:
            letter -= 26

    print(chr(letter))

code_char()

当我缩小列表时,我没有问题。它有效。

CREATE TABLE IF NOT EXISTS my_test (
                id bigint PRIMARY KEY,
                list_strings list<text>
            );

但是,如果我保留我的列表的总体,我有一个错误:

prepared_statement = session.prepare("INSERT INTO my_test (id, list_strings) VALUES (?, ?)")
        session.execute(prepared_statement, [id, strings[:5]])

如何在Cassandra中插入大名单?

1 个答案:

答案 0 :(得分:3)

不支持DB数组类型来保存大量数据。使用表的不同行来存储每个字符串会更好:

    id     |    time    | strings
-----------+------------+---------
  bigint   | timestamp  | string
 partition | clustering |

使用id作为集群密钥将是一个糟糕的解决方案,因为当从用户id请求所有推文时,它将需要在多个节点中进行读取,而当用作分区键时,它只需要读入一个每个用户的节点。