编程语言
首页 > 编程语言> > python – Cassandra缓冲了数百万列的读取

python – Cassandra缓冲了数百万列的读取

作者:互联网

我有一个cassandra集群,行数很少(<100).每行有大约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_start和column_finish指定列名.这是一个问题,因为我实际上并不知道开始或结束列名称是什么.特殊值“”可以指示行的开头或结尾,但这对中间的任何值都不起作用.

那么如何才能完成单行中所有列的缓冲读取?谢谢.

解决方法:

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方面还不够熟练,无法迭代缓冲区来提取列名.

标签:pycassa,python,cassandra
来源: https://codeday.me/bug/20190827/1736152.html