首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡桑德拉缓冲数以百万计的列

卡桑德拉缓冲数以百万计的列
EN

Stack Overflow用户
提问于 2011-04-22 19:44:20
回答 2查看 1.4K关注 0票数 3

我有一个具有少量行(< 100)的cassandra集群。每一行大约有200万列。我需要整行(所有的200万列),但是在我完成我的阅读之前,所有的事情都开始失败了。我想做一些缓冲阅读。

理想情况下,我希望使用Pycassa来做这样的事情(不,这不是调用get的适当方式,只是为了让您了解这个想法):

代码语言:javascript
运行
复制
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指定列。这是一个问题,因为我不知道开始或结束列的名称是什么。特殊值""可以指示行的开始或结束,但对于中间的任何值都不起作用。

那么,我如何完成对单个行中所有列的缓冲读取呢?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-23 01:55:27

来自吡咯1.0.8文件

看起来,您可以使用类似于以下伪代码的内容

代码语言:javascript
运行
复制
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方面还不够熟练,还不能在缓冲区上迭代以提取列名。

票数 4
EN

Stack Overflow用户

发布于 2013-01-17 14:28:21

在吡咯烷酮的v1.7.1+中,您可以使用xget并得到宽到2**63-1列的行。

代码语言:javascript
运行
复制
for col in cf.xget(key, column_count=2**63-1):
    # do something with the column.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5759370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档