У меня есть кластер cassandra с небольшим количеством строк (‹ 100). Каждая строка имеет около 2 миллионов столбцов. Мне нужно получить полную строку (все 2 миллиона столбцов), но все начинает давать сбои, прежде чем я смогу закончить чтение. Я хотел бы сделать какое-то буферизованное чтение.
В идеале я хотел бы сделать что-то подобное, используя 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_start
и column_finish
. Это проблема, поскольку я на самом деле не знаю, какими будут имена начального или конечного столбца. Специальное значение ""
может указывать на начало или конец строки, но это не работает ни для одного из значений в середине.
Итак, как я могу выполнить буферизованное чтение всех столбцов в одной строке? Спасибо.