2012-03-05 3 views

ответ

1

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

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

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

+0

Как я могу сказать, это вернет случайные строки, но всегда одно и то же ... Угадайте, нет простого решения для этого, используя Cassandra ... –

+1

Вам нужно будет каждый раз обращаться к 'get_range' с новым случайным стартовым ключом. ..Это должно выбрать строку из случайной точки на кольцевом пространстве. – DNA

+0

Спасибо! Это то, что я искал ... –

0

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

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 предлагает любую поддержку для захвата случайной, неиндексированной строки.

+0

Чтобы быть конкретным: Я на самом деле означает, случайно выбранные строки .. –

0

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

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

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