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指定列名.这是一个问题,因为我实际上并不知道开始或结束列名称是什么.特殊值“”可以指示行的开头或结尾,但这对中间的任何值都不起作用.
那么如何才能完成单行中所有列的缓冲读取?谢谢.
解决方法:
看起来你可以使用类似下面的[伪代码]:
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