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