我有一个具有少量行(< 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)皮卡卡(顺便说一句,卡桑德拉)不要让你这么做。相反,您需要为和column_finish指定列。这是一个问题,因为我不知道开始或结束列的名称是什么。特殊值""可以指示行的开始或结束,但对于中间的任何值都不起作用。
那么,我如何完成对单个行中所有列的缓冲读取呢?谢谢。
发布于 2011-04-23 01:55:27
来自吡咯1.0.8文件
看起来,您可以使用类似于以下伪代码的内容
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方面还不够熟练,还不能在缓冲区上迭代以提取列名。
发布于 2013-01-17 14:28:21
在吡咯烷酮的v1.7.1+中,您可以使用xget并得到宽到2**63-1列的行。
for col in cf.xget(key, column_count=2**63-1):
# do something with the column.https://stackoverflow.com/questions/5759370
复制相似问题