Кассандра / Пикасса: получение случайных строк

Есть ли возможность извлекать случайные строки из Cassandra (используя его с Python / Pycassa)?

Обновление: со случайными строками я имею в виду случайно выбранные строки!

Возможно, вы сможете сделать это, get_range запрос get_range со случайным start ключом (только случайная строка) и row_count из 1.

Из памяти я думаю, что ключ finish должен быть таким же, как и start , так что запрос «обертывает» пространство ключей; это обычно возвращает все строки, но row_count ограничивает это.

Не пробовал, но это должно гарантировать, что вы получите единственный результат, не имея необходимости знать точные строки.

Не уверен, что вы подразумеваете под случайными рядами. Если вы имеете в виду строки произвольного доступа, то вы можете сделать это очень легко:

 import pycassa.pool import pycassa.columnfamily pool = pycassa.pool.ConnectionPool('keyspace', ['localhost:9160'] cf = pycassa.columnfamily.ColumnFamily(pool, 'cfname') row = cf.get('row_key') 

Это даст вам любую строку. Если вы имеете в виду, что вам нужна случайная строка, я не думаю, что вы сможете сделать это очень легко, не зная, что это за клавиши. Вы можете создать строку индекса, а затем выбрать из нее случайный столбец и использовать ее для захвата строки из другого семейства столбцов. В принципе, вам нужно создать новую строку, где каждое значение столбца, является строковым ключом из семейства столбцов, из которого вы пытаетесь выбрать строку. Затем вы можете получить случайный столб из этой строки, и у вас есть ключ к случайной строке.

Я не думаю, что pycassa предлагает любую поддержку для захвата случайной, неиндексированной строки.

Это работает для моего случая:

 ini = random.randint(0, 999999999) rows = col_fam.get_range(str(ini), row_count=1, column_count=0,filter_empty=False) 

Вам придется адаптироваться к типу строки строки (строка в моем случае)