Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将大列表插入Cassandra_Python_List_Python 3.x_Cassandra - Fatal编程技术网

使用python将大列表插入Cassandra

使用python将大列表插入Cassandra,python,list,python-3.x,cassandra,Python,List,Python 3.x,Cassandra,我在使用python将大列表插入Cassandra时遇到问题。我有一个3200字符串的列表,我想保存在Cassandra中: CREATE TABLE IF NOT EXISTS my_test ( id bigint PRIMARY KEY, list_strings list<text> ); 但如果我保留全部列表,我有一个错误: Error from server: code=1500 [

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

CREATE TABLE IF NOT EXISTS my_test (
                id bigint PRIMARY KEY,
                list_strings list<text>
            );
但如果我保留全部列表,我有一个错误:

Error from server: code=1500 [Replica(s) failed to execute write] message="Operation failed - received 0 responses and 1 failures" info={'required_responses': 1, 'consistency': 'LOCAL_ONE', 'received_responses': 0, 'failures': 1}

如何将大列表插入Cassandra

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

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

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

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

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

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

将3.200字符串列表插入Cassandra中的单个单元格的概念可能是错误的。为什么不将每个字符串作为不同的行插入?这样我的模型就错了?我应该只插入:id string1 id string2…可能,在不了解有关此表的更多信息的情况下,我无法100%确定。你能告诉我一些上下文以便我能帮助你更多吗?Id是twitter上的一个用户,字符串列表是他们的tweet(JSON)列表好的,那么,依我看,你应该使用2个主键列。第一个仍然应该是用户id,并且应该是分区键。第二个应该是一个包含整数(大小取决于数据)或时间戳的聚类键,如果这给了您任何类型的信息,并且您可以以足够的精度获得这些信息,那么对于同一用户,tweet不会与其他tweet位于同一时间戳中。主键之外的最后一列是纯文本列,您可以在其中存储一条tweet。您熟悉分区键和集群键吗?在Cassandra中将3.200字符串列表插入单个单元格的概念可能是错误的。为什么不将每个字符串作为不同的行插入?这样我的模型就错了?我应该只插入:id string1 id string2…可能,在不了解有关此表的更多信息的情况下,我无法100%确定。你能告诉我一些上下文以便我能帮助你更多吗?Id是twitter上的一个用户,字符串列表是他们的tweet(JSON)列表好的,那么,依我看,你应该使用2个主键列。第一个仍然应该是用户id,并且应该是分区键。第二个应该是一个包含整数(大小取决于数据)或时间戳的聚类键,如果这给了您任何类型的信息,并且您可以以足够的精度获得这些信息,那么对于同一用户,tweet不会与其他tweet位于同一时间戳中。主键之外的最后一列是纯文本列,您可以在其中存储一条tweet。您熟悉分区和集群键吗?