gpt4 book ai didi

python - Cassandra 缓冲读取数百万列

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:07 25 4
gpt4 key购买 nike

我有一个包含少量行 (< 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com