我在使用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中插入大名单?
答案 0 :(得分:3)
不支持DB数组类型来保存大量数据。使用表的不同行来存储每个字符串会更好:
id | time | strings
-----------+------------+---------
bigint | timestamp | string
partition | clustering |
使用id作为集群密钥将是一个糟糕的解决方案,因为当从用户id请求所有推文时,它将需要在多个节点中进行读取,而当用作分区键时,它只需要读入一个每个用户的节点。