python - 处理 100 万行键的 pycassa multiget 的有效方法是什么

标签 python cassandra pycassa cassandra-cli cassandra-2.0

我是 cassandra 的新手。

现在,我已经成功地让我的代码在相对较小的数据集上适用于我的问题场景。

但是,当我尝试对 100 万个行键执行多重获取时,它失败并显示消息“重试 6 次。上次失败超时:超时”。

例如:colfam.multiget([rowkey1,...........,rowkey_Million])

基本上,我尝试查询的列族有 100 万条记录,每条记录有 28 列。

这里,我在单个 ubuntu 虚拟机上运行 2 节点 cassandra 集群,系统配置为

内存:3GB 处理器:1CPU

那么我如何有效地处理如此多的行键上的多重获取,然后将其批量插入到另一个 cassandra 列族中?

提前致谢:):)

最佳答案

我在 pycassa mailing list 上对此做出了回应同样(请尽量不要在多个地方发布),但我会将答案复制给其他看到此内容的人:

multiget 对于 Cassandra 来说是一个非常昂贵的操作。 Multiget 中的每一行可能需要 Cassandra 进行几次磁盘查找。 pycassa 自动将查询分割成更小的 block ,但这仍然非常昂贵。

如果您尝试读取整个列族,请使用 get_range()

如果您只是尝试读取该列族中的行子集(基于某些属性)并且需要经常执行此操作,则需要使用不同的数据模型。

由于您是新手,我会花一些时间学习 Cassandra 中的数据建模:http://wiki.apache.org/cassandra/DataModel 。 (注意:这些示例中的大多数将使用 CQL3,而 pycassa 不支持 CQL3。如果您想使用 CQL3,请使用新的 DataStax python 驱动程序:https://github.com/datastax/python-driver)

关于python - 处理 100 万行键的 pycassa multiget 的有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21594345/

相关文章:

cassandra - 在接受基于用户的读/写队列之前,新的 Cassandra 节点是否应该完全填充数据并重新平衡集群?

Cassandra 硬删除与软删除

python - 在pycassa中使用column_validators

cassandra - 如何使用 pycassa 指定主键?

cassandra - pycassa从 super 列中删除特定键

python - 在httpresponse中返回python对象

python - 我想打乱这些变量,然后将它们组合到另一个函数中以将图像打印到屏幕上

python - Julia 神经网络代码速度与 PyPy 相同

testing - 如何在用户配置文件模式下正确使用 cassandra-stress 工具?

Python PIL 连接图像