python - Cassandra 缓冲读取数百万列

标签 python cassandra pycassa

我有一个包含少量行 (< 100) 的 cassandra 集群。每行有大约 200 万列。我需要得到一整行(所有 200 万列),但在我完成阅读之前,所有地方都开始失败。我想进行某种缓冲读取。

理想情况下,我想使用 Pycassa 做这样的事情(不,这不是调用 get 的正确方法,只是为了让您明白这个想法):

results = {}
start = 0
while True:
    # Fetch blocks of size 500
    buffer = column_family.get(key, column_offset=start, column_count=500)
    if len(buffer) == 0:
        break

    # Merge these results into the main one
    results.update(buffer)

    # Update the offset
    start += len(buffer)

Pycassa(以及扩展名 Cassandra)不允许您这样做。相反,您需要为 column_startcolumn_finish 指定列 name。这是一个问题,因为我实际上并不知道开始或结束列名是什么。特殊值 "" 可以指示行的开始或结束,但这对中间的任何值都不起作用。

那么我怎样才能完成对一行中所有列的缓冲读取呢?谢谢。

最佳答案

来自pycassa 1.0.8 documentation

看起来你可以使用类似下面的[伪代码]:

results = {}
start = 0
startColumn = ""
while True:
    # Fetch blocks of size 500

   buffer = get(key, column_start=startColumn, column_finish="", column_count=100)
   # iterate returned values. 
   # set startColumn == previous column_finish. 

请记住,在每次后续调用中,您只会返回 99 个结果,因为它还会返回您已经看到的 startColumn。我对 Python 还不够熟练,无法迭代缓冲区以提取列名。

关于python - Cassandra 缓冲读取数百万列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759370/

相关文章:

用于 apache cassandra 的 python ORM

cassandra - Python 的最佳 Cassandra 1.2 驱动程序,我应该忘记 CQL 吗?

python - 如何让 pycassaShell 在 Windows 中工作?

python - Tensorflow 自定义指标 : SensitivityAtSpecificity

python - 这怎么能写在一行上呢?

cassandra - CQL 在输入 '(' 错误处没有可行的选择

Django Cassandra 引擎 - 如何定义表名

python - 使用 Python 的 KMeans 算法聚类地理位置坐标(lat,long 对)

python Chef 在控制台而不是脚本中工作

java - 优化 Java CassandraPreparedStatementCache