2016-08-26 10 views
1

Я хотел бы выполнить запрос с Happybase для некоторых известных ключей строк и добавить фильтр значений, чтобы возвращались только строки, соответствующие фильтру.Happybase-фильтрация с использованием функции строк

В HBase оболочки можно поставить фильтр на команду GET, например, так:

get 'meta', 'someuser', {FILTER => "SingleColumnValueFilter ('cf','gender',=,'regexstring:^male$')"} 

В Happybase вы можете добавить фильтр к команде scan, но я не вижу вариант на rows запроса , Вот как это работает scan:

rows = tab.scan(filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')") 

Есть ли способ, чтобы выполнить отфильтрованные rows запроса (для потенциально случайных упорядоченных ключей строк) с использованием Happybase (или любой другой клиентской библиотеки Python Hbase)?

Я предполагал, что это будет выглядеть следующим образом (но нет никакого фильтра аргумента):

rows = tab.rows(rows=['h_key', 'a_key', 'z_key'], filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')") 

ответ

0

Получить с фильтром равен Сканирование с началом/остановкой строки.

rows = tab.scan(filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')", 
        row_start="someuser", row_stop="someuser") 

В Java FilterList в сочетании MultiRowRangeFilter и SingleColumnValueFilte г прекрасно удовлетворить ваши требования, и есть example об этом.

Однако, как happyhbase использовать сервис Hbase Thrift, и кажется, что don't support FilterList, поэтому я думаю, что лучшее, что вы можете получить, это вызвать описанную выше процедуру для каждого ключа в вашем примере.

+0

Об отражении Я что-то оставил из своего вопроса, я его отредактирую. Запрос, который я хочу выполнить, представляет собой запрос 'rows' по произвольно упорядоченному набору ключей строк. Я не могу использовать диапазон строк, поскольку порядок неизвестен. – dsimmie

+0

@dsimmie обновить ответ, и я не думаю, что есть идеальное решение с текущей версией '' 'happybase'''. –

 Смежные вопросы

  • Нет связанных вопросов^_^