Как применить операцию фильтра «LIKE», используя SingleColumnValueFilter в HBASE? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть столбец в таблице HBASE, каждая ячейка которого содержит несколько значений (точнее, составного значения), как показано ниже:

Пример значения в ячейке:

'2018-10-15=33|2018-10-16=56'

Этов основном это набор пар ключ-значение с ключом в качестве даты и значением в качестве счетчика.Пары ключ-значение разделяются символом канала.

Я хочу запустить сканирование этой таблицы HBASE (предпочтительно с использованием SingleColumnValueFilter), чтобы найти все строки, где ячейки для указанного выше столбца имеют какую-либо конкретную дату, например 2018-10-15.Обратите внимание, что рассматриваемый столбец не является ключом строки.

Чтобы прояснить мое требование, похожая операция в SQL будет выглядеть следующим образом:

WHERE COLUMN_X LIKE '%2018-10-15%'

Как установить фильтрдля этого сканирования в HBASE?

Я не нахожу компаратор, подобный указанному ниже:

org.apache.hadoop.hbase.filter.CompareFilter.CompareOp.LIKE

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете использовать SubstringComparator с ValueFilter.

т.е.

scan 'yourtable', { COLUMNS => 'cf:COLUMN_X ', FILTER => "ValueFilter(=, 'substring:2018-10-15')"}

Если вы хотите реализовать его в Java, вы можете использовать следующее:

SubstringComparator comp = new SubstringComparator("2018-10-15");   

SingleColumnValueFilter filter = new SingleColumnValueFilter(
    Bytes.toBytes("cf"),
    Bytes.toBytes("column_X"),
    CompareOp.EQUAL,
    comp
    );
scan.setFilter(filter);

ЗдесьВы можете найти более подробную информацию о том, как использовать компаратор и фильтры: http://hbase.apache.org/0.94/book/client.filter.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...