Есть ли возможность извлекать случайные строки из Cassandra (используя его с Python/Pycassa)?Cassandra/Pycassa: Получение случайных строк
Обновление: со случайными строками Я имею в виду случайно выбранные строки!
Есть ли возможность извлекать случайные строки из Cassandra (используя его с Python/Pycassa)?Cassandra/Pycassa: Получение случайных строк
Обновление: со случайными строками Я имею в виду случайно выбранные строки!
Вы могли бы быть в состоянии сделать это, сделав 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)
Вам придется адаптироваться к ряду ключевых типа (строки в моем случае)
Как я могу сказать, это вернет случайные строки, но всегда одно и то же ... Угадайте, нет простого решения для этого, используя Cassandra ... –
Вам нужно будет каждый раз обращаться к 'get_range' с новым случайным стартовым ключом. ..Это должно выбрать строку из случайной точки на кольцевом пространстве. – DNA
Спасибо! Это то, что я искал ... –