Использование фильтров в HBase
Обзор
HBase в ADH предоставляет язык фильтров Thrift (Thrift filter language). Он позволяет фильтровать результаты чтения данных из HBase при использовании команд get
и scan
. Фильтрация происходит на стороне сервера и нагрузку на HBase не уменьшает. Однако уменьшается нагрузка на сеть, поскольку клиенту передается меньше данных. Фильтры могут использоваться как при взаимодействии через Java API, так и в консоли HBase shell.
Синтаксис фильтров HBase
Простой фильтр
Простой фильтр задается строкой следующего вида:
"<FilterName> (<arg1>, <arg2>, ..., <argN>)"
где:
-
<FilterName>
— имя одного из индивидуальных фильтров; -
<arg1>
,<arg2>
и т.д. — аргументы этого фильтра.
Пример использования простого фильтра в консоли HBase shell:
scan 'articles', { FILTER => "ColumnPaginationFilter (2, 1)"}
Полный набор аргументов — это условие фильтра. Различные индивидуальные фильтры могут принимать разное количество аргументов — от нуля и более.
Аргументы могут иметь следующие типы:
-
строка;
-
целое;
-
логический;
Метки времени
В консоли HBase shell метки времени в результатах чтения таблиц отображаются в человекочитаемом формате. Однако, если фильтр требует метку времени в качестве значения аргумента, она должна быть задана в формате эпохи Unix. Для преобразования меток времени из одного формата в другой используйте онлайн-инструменты, например EpochConverter.
ПРИМЕЧАНИЕ
Для меток времени в HBase требуется точность до миллисекунд. Вам потребуется вручную дописывать миллисекунды к меткам времени после преобразования в формат эпохи Unix.
|
Операторы сравнения и компараторы
Операторы сравнения и компараторы используются в аргументах фильтров для составления условий лексикографических соответствий и сравнений.
Следующие операторы сравнения используются в качестве аргументов фильтра.
Синтаксис | Описание |
---|---|
< |
Меньше |
> |
Больше |
= |
Равно |
<= |
Меньше или равно |
>= |
Больше или равно |
!= |
Не равно |
Следующие компараторы используются в качестве аргументов фильтра.
Название | Описание | Пример |
---|---|---|
BinaryComparator |
Лексикографически сравнивает с заданной строкой |
(>, 'binary:arc') Такой компаратор соответствует всему, что лексикографически больше чем |
BinaryPrefixComparator |
Лексикографически сравнивает с заданной строкой. Сравнение выполняется только до длины этой строки |
(=, 'binaryprefix:bot') Такой компаратор соответствует всему, что начинается с |
RegexStringComparator |
Лексикографически сравнивает с заданным регулярным выражением для строки. С этим компаратором можно использовать только операторы сравнения |
(!=, 'regexstring:be*ng') Такой компаратор соответствует любой строке, кроме тех, которые начинаются с |
SubStringComparator |
Ищет заданную подстроку без учета регистра. С этим компаратором можно использовать только операторы сравнения |
(!=, substring:con) Такой компаратор соответствует любой строке, кроме тех, в которых содержится |
Составной фильтр
Составной фильтр состоит из индивидуальных фильтров, объединенных логическими операторами. Существуют бинарные и унарные логические операторы. Бинарные операторы объединяют фильтры слева и справа от себя:
-
AND
— пара ключ/значение возвращается только если она удовлетворяет обоим фильтрам. -
OR
— пара ключ/значение возвращается, если она удовлетворяет любому из фильтров.
Унарные операторы предшествуют фильтру и меняют его поведение:
-
SKIP
— если одна из пар ключ/значение не удовлетворяет условию фильтра, то вся строка отбрасывается. -
WHILE
— для каждой строки пары ключ/значение продолжают извлекаться до тех пор, пока одна из них не перестанет удовлетворять условию фильтра.
Используйте скобки для определения порядка обработки индивидуальных фильтров в составных фильтрах. Пример:
(<Filter1> OR <Filter2>) AND (<Filter3> OR <Filter4>)
Сначала обрабатывается результат объединения фильтров <Filter1>
и <Filter2>
оператором OR
. Затем то же самое происходит с фильтрами <Filter3>
и <Filter4>
. В конце эти два результата объединяются оператором AND
.
Логические операторы и скобки имеют следующие приоритеты, от высшего к низшему:
-
скобки;
-
SKIP
иWHILE
(имеют равный приоритет); -
AND
; -
OR
.
Пример использования составного фильтра в консоли HBase shell:
scan 'articles', { FILTER => "ColumnPaginationFilter (2, 1) AND PrefixFilter ('co')"}
Индивидуальные фильтры в HBase
Представленные в HBase индивидуальные фильтры и их синтаксис перечислены ниже. Примеры запросов выполнены для тестовой таблицы, заполненной значениями из тестового файла people.csv. Этот файл является расширенной версией тестового файла, использованного в статье Массовая загрузка с использованием встроенных задач MapReduce. Используйте инструкции из этой статьи, если хотите создать такую же тестовую таблицу, которая используется здесь. В этом случае следует использовать видоизмененную команду для запуска задачи ImportTsv
: вместо флага -Dimporttsv.columns=HBASE_ROW_KEY,basic:age
задайте -Dimporttsv.columns=HBASE_ROW_KEY,basic:age,location:town,location:state,location:country
. При необходимости, соответствующим образом замените имена файла и таблицы в команде.
Ключами строк таблицы являются имена людей. Первое семейство столбцов называется basic
и имеет единственный квалификатор age
. Второе семейство столбцов называется location
и имеет три квалификатора: country
, state
и town
. В таблице 997 строк.
Возвращает ключ из каждой пары ключ/значение. Не принимает аргументов.
Синтаксис:
"KeyOnlyFilter ()"
Пример команды:
scan 'people', { FILTER => "KeyOnlyFilter ()" }
Результат (последние 8 ключей):
... Zimmerman Gene column=basic:age, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Gene column=location:country, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Gene column=location:state, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Gene column=location:town, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Madge column=basic:age, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Madge column=location:country, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Madge column=location:state, timestamp=2024-07-30T08:10:19.297, value= Zimmerman Madge column=location:town, timestamp=2024-07-30T08:10:19.297, value= 997 row(s) Took 0.5022 seconds
Возвращает первую пару ключ/значение из каждой строки. Не принимает аргументов.
Синтаксис:
"FirstKeyOnlyFilter ()"
Пример команды:
scan 'people', { FILTER => "KeyOnlyFilter ()" }
Результат (первые и последние пять пар ключ/значение):
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Jack column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Adams Clyde column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Aguilar Myrtie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 ... Young Della column=basic:age, timestamp=2024-07-30T08:10:19.297, value=21 Young Josephine column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Young Mattie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=39 Zimmerman Gene column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Zimmerman Madge column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 997 row(s) Took 0.1058 seconds
Возвращает все пары ключ/значение из тех строк, чьи ключи начинаются с префикса, заданного аргументом. Принимает один аргумент: префикс ключа строки.
Синтаксис:
"PrefixFilter ('Roy')"
Пример команды:
scan 'people', { FILTER => "PrefixFilter ('Roy')" }
Результат:
ROW COLUMN+CELL Roy Alfred column=basic:age, timestamp=2024-07-30T08:10:19.297, value=55 Roy Alfred column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Roy Alfred column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Roy Alfred column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez Roy Belle column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Roy Belle column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Roy Belle column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ Roy Belle column=location:town, timestamp=2024-07-30T08:10:19.297, value=Nogales Roy Lora column=basic:age, timestamp=2024-07-30T08:10:19.297, value=52 Roy Lora column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Roy Lora column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Roy Lora column=location:town, timestamp=2024-07-30T08:10:19.297, value=Uman Roy Ronald column=basic:age, timestamp=2024-07-30T08:10:19.297, value=63 Roy Ronald column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Roy Ronald column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Roy Ronald column=location:town, timestamp=2024-07-30T08:10:19.297, value=Mexicali 4 row(s) Took 0.0252 seconds
Возвращает все пары ключ/значение из тех столбцов, чьи квалификаторы начинаются с префикса, заданного аргументом. Принимает один аргумент: префикс квалификатора столбца.
Синтаксис:
"ColumnPrefixFilter ('tow')"
Пример команды:
scan 'people', { FILTER => "ColumnPrefixFilter ('tow')" }
Поскольку все строки тестовой таблицы имеют непустые значения для всех столбцов, такой фильтр вернет либо 0 результатов, если ни один из квалификаторов столбцов не имеет заданного префикса, либо все 997, если такой квалификатор есть. Приведенная выше команда вернет 997 пар ключ/значение, первые и последние пять из которых приведены ниже:
ROW COLUMN+CELL Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Abbott Jack column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez Adams Clyde column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Aguilar Myrtie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Uman ... Young Della column=location:town, timestamp=2024-07-30T08:10:19.297, value=Chetumal Young Josephine column=location:town, timestamp=2024-07-30T08:10:19.297, value=Redding Young Mattie column=location:town, timestamp=2024-07-30T08:10:19.297, value=San Jose Zimmerman Gene column=location:town, timestamp=2024-07-30T08:10:19.297, value=Tijuana Zimmerman Madge column=location:town, timestamp=2024-07-30T08:10:19.297, value=Nogales 997 row(s) Took 0.1360 seconds
Возвращает все пары ключ/значение из тех столбцов, чьи квалификаторы начинаются с любого из префиксов, заданных аргументами. Принимает один или несколько аргументов: префиксы квалификаторов столбцов. В случае единственного аргумента работает как фильтр ColumnPrefixFilter
.
Синтаксис:
"MultipleColumnPrefixFilter ('sta', 'tow')"
Пример команды:
scan 'people', { FILTER => "MultipleColumnPrefixFilter ('sta', 'tow')" }
Здесь происходит то же, что и в предыдущем примере (фильтр ColumnPrefixFilter
): поскольку все строки тестовой таблицы имеют непустые значения для всех столбцов, такой фильтр вернет либо 0 результатов, если ни один из квалификаторов столбцов не имеет какого-либо из заданных префиксов, либо все 997 на каждый найденный квалификатор. Если один из заданных префиксов является префиксом другого (например, to
и tow
), количество результатов не увеличивается. Приведенная выше команда вернет 997 пар ключ/значение, первые и последние пять из которых приведены ниже:
ROW COLUMN+CELL Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Abbott Jack column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Abbott Jack column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez ... Young Mattie column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Young Mattie column=location:town, timestamp=2024-07-30T08:10:19.297, value=San Jose Zimmerman Gene column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Zimmerman Gene column=location:town, timestamp=2024-07-30T08:10:19.297, value=Tijuana Zimmerman Madge column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ Zimmerman Madge column=location:town, timestamp=2024-07-30T08:10:19.297, value=Nogales 997 row(s) Took 0.1360 seconds
Возвращает заданное аргументом количество столбцов в строке, начиная с первого. Этот фильтр корректно работает только с отдельными строками, поэтому его следует использовать с командой get
. Использование этого фильтра с командой scan
не приводит к ошибке, но возвращает некорректный результат. Принимает один аргумент: количество столбцов.
Синтаксис:
"ColumnCountGetFilter (3)"
Пример команды:
get 'people', 'Abbott Delia', { FILTER => "ColumnCountGetFilter (3)" }
Результат:
COLUMN CELL basic:age timestamp=2024-07-30T08:10:19.297, value=62 location:country timestamp=2024-07-30T08:10:19.297, value=USA location:state timestamp=2024-07-30T08:10:19.297, value=TX 1 row(s) Took 0.6243 seconds
Возвращает заданное аргументом количество строк таблицы, начиная с первой, из каждого региона. Принимает один аргумент: количество строк.
Синтаксис:
"PageFilter (2)"
Пример команды:
scan 'people', { FILTER => "PageFilter (2)" }
Поскольку в тестовой таблице было создано пять регионов, разделенных в точках F
, K
, P
и W
, эта команда вернет по две строки с четырьмя парами ключ/значение в каждой из каждого региона. Результат:
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Delia column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Howard column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Howard column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Farmer Alan column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Farmer Alan column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Farmer Alan column=location:state, timestamp=2024-07-30T08:10:19.297, value=Quintana Roo Farmer Alan column=location:town, timestamp=2024-07-30T08:10:19.297, value=Cancun Farmer Dean column=basic:age, timestamp=2024-07-30T08:10:19.297, value=65 Farmer Dean column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Farmer Dean column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Farmer Dean column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Keller Elmer column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Keller Elmer column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Keller Elmer column=location:state, timestamp=2024-07-30T08:10:19.297, value=Quintana Roo Keller Elmer column=location:town, timestamp=2024-07-30T08:10:19.297, value=Chetumal Keller Flora column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 Keller Flora column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Keller Flora column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Keller Flora column=location:town, timestamp=2024-07-30T08:10:19.297, value=Houston Padilla Ethan column=basic:age, timestamp=2024-07-30T08:10:19.297, value=61 Padilla Ethan column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Padilla Ethan column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Padilla Ethan column=location:town, timestamp=2024-07-30T08:10:19.297, value=Novac Padilla Scott column=basic:age, timestamp=2024-07-30T08:10:19.297, value=28 Padilla Scott column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Padilla Scott column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Padilla Scott column=location:town, timestamp=2024-07-30T08:10:19.297, value=Beaumont Wade Janie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=25 Wade Janie column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Wade Janie column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Wade Janie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Ensenada Wade Jerome column=basic:age, timestamp=2024-07-30T08:10:19.297, value=27 Wade Jerome column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Wade Jerome column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Wade Jerome column=location:town, timestamp=2024-07-30T08:10:19.297, value=Houston 10 row(s) Took 0.0138 seconds
Возвращает заданное первым аргументом (предел) количество столбцов после столбца с номером по счету, заданным вторым аргументом (отступ). Принимает два аргумента: предел и отступ.
Синтаксис:
"ColumnPaginationFilter (2, 1)"
Пример команды:
scan 'people', { FILTER => "ColumnPaginationFilter (2, 1)" }
Эта команда возвращает 1994 пары ключ/значение, первые и последние шесть из которых приведены ниже:
ROW COLUMN+CELL Abbott Delia column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Abbott Howard column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Howard column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Abbott Jack column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Abbott Jack column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua ... Young Mattie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Young Mattie column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Zimmerman Gene column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Zimmerman Gene column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Zimmerman Madge column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Zimmerman Madge column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ 997 row(s) Took 1.0474 seconds
Выполняет построчное сканирование таблицы до нахождения заданного ключа строки, затем возвращает все строки вплоть до той, в которой был найден ключ, включительно. Принимает одно значение: ключ строки.
Синтаксис:
"InclusiveStopFilter (3)"
Пример команды:
scan 'people', { FILTER => "InclusiveStopFilter ('Allen Austin')" }
Результат:
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Delia column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Howard column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Howard column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Abbott Jack column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Abbott Jack column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Abbott Jack column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Abbott Jack column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez Adams Clyde column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Adams Clyde column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Adams Clyde column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Adams Clyde column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Aguilar Myrtie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 Aguilar Myrtie column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Aguilar Myrtie column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Aguilar Myrtie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Uman Aguilar Terry column=basic:age, timestamp=2024-07-30T08:10:19.297, value=65 Aguilar Terry column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Aguilar Terry column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Aguilar Terry column=location:town, timestamp=2024-07-30T08:10:19.297, value=Fresno Alexander Derrick column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 Alexander Derrick column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Derrick column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Alexander Derrick column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Alexander Gregory column=basic:age, timestamp=2024-07-30T08:10:19.297, value=54 Alexander Gregory column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Gregory column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Alexander Gregory column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Alexander Leon column=basic:age, timestamp=2024-07-30T08:10:19.297, value=42 Alexander Leon column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Leon column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ Alexander Leon column=location:town, timestamp=2024-07-30T08:10:19.297, value=Kingman Allen Austin column=basic:age, timestamp=2024-07-30T08:10:19.297, value=34 Allen Austin column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Allen Austin column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Allen Austin column=location:town, timestamp=2024-07-30T08:10:19.297, value=Primm 10 row(s) Took 0.7167 seconds
Возвращает все пары ключ/значение, чьи метки времени совпадают с любой из заданных. Принимает любое количество аргументов: метки времени.
Синтаксис:
"TimestampsFilter (1721203180857, 1721316861863)"
Все пары ключ/значение в тестовой таблице имеют одну и ту же метку времени, поэтому для более наглядного результата имеет смысл поправить несколько ключей с помощью команды put
:
put 'people', 'Young Mattie', 'location:town', 'Carlsbad', 1722327020000
put 'people', 'Young Mattie', 'location:state', 'NM', 1722327020000
put 'people', 'Yates Douglas', 'location:state', 'NM', 1722327020000
put 'people', 'Yates Douglas', 'location:town', 'Albuquerque', 1722327020000
Пример команды:
scan 'people', { FILTER => "TimestampsFilter (1722327020000)" }
Результат:
ROW COLUMN+CELL Yates Douglas column=location:state, timestamp=2024-07-30T08:10:20, value=NM Yates Douglas column=location:town, timestamp=2024-07-30T08:10:20, value=Albuquerque Young Mattie column=location:state, timestamp=2024-07-30T08:10:20, value=NM Young Mattie column=location:town, timestamp=2024-07-30T08:10:20, value=Carlsbad 2 row(s) Took 0.1001 seconds
Проверяет все строки и возвращает все пары ключ/значение из строки, если значение ключа этой строки удовлетворяет условию сравнения, заданного аргументами. Этот фильтр не работает с командой get
. Принимает два аргумента: оператор сравнения и компаратор.
Синтаксис:
"RowFilter (>=, 'binaryprefix:B')"
Пример команды:
scan 'people', { FILTER => "RowFilter (<, 'binaryprefix:B')" }
Этот фильтр возвращает все пары ключ/значение из строк, ключи которых начинаются со значений, лексикографически меньших B
. В случае нашей тестовой таблицы это означает все строки с людьми, чьи фамилии начинаются с А
. Результат.
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Delia column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Howard column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Abbott Howard column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Abbott Jack column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Abbott Jack column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Abbott Jack column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Abbott Jack column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez Adams Clyde column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Adams Clyde column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Adams Clyde column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Adams Clyde column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Aguilar Myrtie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 Aguilar Myrtie column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Aguilar Myrtie column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Aguilar Myrtie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Uman Aguilar Terry column=basic:age, timestamp=2024-07-30T08:10:19.297, value=65 Aguilar Terry column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Aguilar Terry column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Aguilar Terry column=location:town, timestamp=2024-07-30T08:10:19.297, value=Fresno Alexander Derrick column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 Alexander Derrick column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Derrick column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Alexander Derrick column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Alexander Gregory column=basic:age, timestamp=2024-07-30T08:10:19.297, value=54 Alexander Gregory column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Gregory column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Alexander Gregory column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Alexander Leon column=basic:age, timestamp=2024-07-30T08:10:19.297, value=42 Alexander Leon column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alexander Leon column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ Alexander Leon column=location:town, timestamp=2024-07-30T08:10:19.297, value=Kingman Allen Austin column=basic:age, timestamp=2024-07-30T08:10:19.297, value=34 Allen Austin column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Allen Austin column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Allen Austin column=location:town, timestamp=2024-07-30T08:10:19.297, value=Primm Allison Dustin column=basic:age, timestamp=2024-07-30T08:10:19.297, value=54 Allison Dustin column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Allison Dustin column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Allison Dustin column=location:town, timestamp=2024-07-30T08:10:19.297, value=Merida Alvarado Dominic column=basic:age, timestamp=2024-07-30T08:10:19.297, value=63 Alvarado Dominic column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Alvarado Dominic column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Alvarado Dominic column=location:town, timestamp=2024-07-30T08:10:19.297, value=Ensenada Alvarado Maria column=basic:age, timestamp=2024-07-30T08:10:19.297, value=58 Alvarado Maria column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Alvarado Maria column=location:state, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Alvarado Maria column=location:town, timestamp=2024-07-30T08:10:19.297, value=Chihuahua Alvarado Melvin column=basic:age, timestamp=2024-07-30T08:10:19.297, value=34 Alvarado Melvin column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alvarado Melvin column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Alvarado Melvin column=location:town, timestamp=2024-07-30T08:10:19.297, value=Austin Alvarado Timothy column=basic:age, timestamp=2024-07-30T08:10:19.297, value=27 Alvarado Timothy column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alvarado Timothy column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Alvarado Timothy column=location:town, timestamp=2024-07-30T08:10:19.297, value=San Francisco Alvarez Bessie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=34 Alvarez Bessie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alvarez Bessie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Alvarez Bessie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Las Vegas Alvarez Bruce column=basic:age, timestamp=2024-07-30T08:10:19.297, value=60 Alvarez Bruce column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alvarez Bruce column=location:state, timestamp=2024-07-30T08:10:19.297, value=CA Alvarez Bruce column=location:town, timestamp=2024-07-30T08:10:19.297, value=Modesto Alvarez Harvey column=basic:age, timestamp=2024-07-30T08:10:19.297, value=57 Alvarez Harvey column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Alvarez Harvey column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Alvarez Harvey column=location:town, timestamp=2024-07-30T08:10:19.297, value=Fallon Alvarez Jacob column=basic:age, timestamp=2024-07-30T08:10:19.297, value=49 Alvarez Jacob column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Alvarez Jacob column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Alvarez Jacob column=location:town, timestamp=2024-07-30T08:10:19.297, value=Merida Anderson Lester column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Anderson Lester column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Anderson Lester column=location:state, timestamp=2024-07-30T08:10:19.297, value=Sonora Anderson Lester column=location:town, timestamp=2024-07-30T08:10:19.297, value=Hermosillo Anderson Lucile column=basic:age, timestamp=2024-07-30T08:10:19.297, value=33 Anderson Lucile column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Anderson Lucile column=location:state, timestamp=2024-07-30T08:10:19.297, value=Sonora Anderson Lucile column=location:town, timestamp=2024-07-30T08:10:19.297, value=Hermosillo Anderson Ora column=basic:age, timestamp=2024-07-30T08:10:19.297, value=26 Anderson Ora column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Anderson Ora column=location:state, timestamp=2024-07-30T08:10:19.297, value=Sonora Anderson Ora column=location:town, timestamp=2024-07-30T08:10:19.297, value=Nogales Andrews Caleb column=basic:age, timestamp=2024-07-30T08:10:19.297, value=22 Andrews Caleb column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Andrews Caleb column=location:state, timestamp=2024-07-30T08:10:19.297, value=Quintana Roo Andrews Caleb column=location:town, timestamp=2024-07-30T08:10:19.297, value=Cancun Andrews Lucy column=basic:age, timestamp=2024-07-30T08:10:19.297, value=33 Andrews Lucy column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Andrews Lucy column=location:state, timestamp=2024-07-30T08:10:19.297, value=AZ Andrews Lucy column=location:town, timestamp=2024-07-30T08:10:19.297, value=Kingman Andrews Noah column=basic:age, timestamp=2024-07-30T08:10:19.297, value=63 Andrews Noah column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Andrews Noah column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Andrews Noah column=location:town, timestamp=2024-07-30T08:10:19.297, value=Ensenada Andrews Susan column=basic:age, timestamp=2024-07-30T08:10:19.297, value=48 Andrews Susan column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Andrews Susan column=location:state, timestamp=2024-07-30T08:10:19.297, value=Yucatan Andrews Susan column=location:town, timestamp=2024-07-30T08:10:19.297, value=Merida Armstrong Isabella column=basic:age, timestamp=2024-07-30T08:10:19.297, value=49 Armstrong Isabella column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Armstrong Isabella column=location:state, timestamp=2024-07-30T08:10:19.297, value=Sonora Armstrong Isabella column=location:town, timestamp=2024-07-30T08:10:19.297, value=Hermosillo Armstrong Marie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=25 Armstrong Marie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Armstrong Marie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Armstrong Marie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Santa Fe Arnold Bettie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=18 Arnold Bettie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Arnold Bettie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NV Arnold Bettie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Primm Atkins Daisy column=basic:age, timestamp=2024-07-30T08:10:19.297, value=51 Atkins Daisy column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Atkins Daisy column=location:state, timestamp=2024-07-30T08:10:19.297, value=Quintana Roo Atkins Daisy column=location:town, timestamp=2024-07-30T08:10:19.297, value=Chetumal Atkins Gene column=basic:age, timestamp=2024-07-30T08:10:19.297, value=37 Atkins Gene column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Atkins Gene column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Atkins Gene column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Austin Bertie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=57 Austin Bertie column=location:country, timestamp=2024-07-30T08:10:19.297, value=MEX Austin Bertie column=location:state, timestamp=2024-07-30T08:10:19.297, value=California Baja Austin Bertie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Tijuana Austin Eugene column=basic:age, timestamp=2024-07-30T08:10:19.297, value=64 Austin Eugene column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Austin Eugene column=location:state, timestamp=2024-07-30T08:10:19.297, value=LA Austin Eugene column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Austin Travis column=basic:age, timestamp=2024-07-30T08:10:19.297, value=53 Austin Travis column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Austin Travis column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Austin Travis column=location:town, timestamp=2024-07-30T08:10:19.297, value=El Paso 34 row(s) Took 0.6767 seconds
Проверяет все столбцы и возвращает все пары ключ/значение из столбца, если имя семейства этого столбца удовлетворяет условию сравнения, заданного аргументами. Принимает два аргумента: оператор сравнения и компаратор.
Синтаксис:
"FamilyFilter (\<=, 'binaryprefix:c')"
Пример команды:
scan 'people', { FILTER => "FamilyFilter (<, 'binaryprefix:c')" }
Этот фильтр возвращает все пары ключ/значение, семейства столбцов которых начинаются со значений, лексикографически меншьших c
. В случае нашей тестовой таблицы это означает весь столбец basic:age
. Результат (первые и последние пять строк):
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Jack column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Adams Clyde column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Aguilar Myrtie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 ... Young Della column=basic:age, timestamp=2024-07-30T08:10:19.297, value=21 Young Josephine column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Young Mattie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=39 Zimmerman Gene column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Zimmerman Madge column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 997 row(s) Took 0.4836 seconds
Проверяет все столбцы и возвращает все пары ключ/значение из столбца, если имя квалификатора этого столбца удовлетворяет условию сравнения, заданного аргументами. Принимает два аргумента: оператор сравнения и компаратор.
Синтаксис:
"QualifierFilter (=, 'binary:town')"
Пример команды:
scan 'people', { FILTER => "QualifierFilter (=, 'binary:town')" }
Этот фильтр возвращает все пары ключ/значение, квалификатор столбца которых строго равен town
. Результат (первые и последние пять строк):
ROW COLUMN+CELL Abbott Delia column=location:town, timestamp=2024-07-30T08:10:19.297, value=Dallas Abbott Howard column=location:town, timestamp=2024-07-30T08:10:19.297, value=Baton Rouge Abbott Jack column=location:town, timestamp=2024-07-30T08:10:19.297, value=Juarez Adams Clyde column=location:town, timestamp=2024-07-30T08:10:19.297, value=Lafayette Aguilar Myrtie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Uman ... Young Della column=location:town, timestamp=2024-07-30T08:10:19.297, value=Chetumal Young Josephine column=location:town, timestamp=2024-07-30T08:10:19.297, value=Redding Young Mattie column=location:town, timestamp=2024-07-30T08:10:20, value=Carlsbad Zimmerman Gene column=location:town, timestamp=2024-07-30T08:10:19.297, value=Tijuana Zimmerman Madge column=location:town, timestamp=2024-07-30T08:10:19.297, value=Nogales 997 row(s) Took 0.2112 seconds
Возвращает все пары ключ/значение, значения которых удовлетворяют условию сравнения, заданного аргументами. Принимает два значения: оператор сравнения и компаратор.
Синтаксис:
"ValueFilter (=, 'binary:TX')"
Пример команды:
scan 'people', { FILTER => "ValueFilter (=, 'binary:TX')" }
Этот фильтр возвращает список техасцев из тестовой таблицы, то есть все пары ключ/значение, строго равные TX
. Результат (первые и последние пять строк):
ROW COLUMN+CELL Abbott Delia column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Alexander Derrick column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Alvarado Melvin column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Atkins Gene column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Austin Travis column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX ... Watkins Julian column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Welch Lela column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Willis Travis column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Wilson Grace column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX Wilson Nellie column=location:state, timestamp=2024-07-30T08:10:19.297, value=TX 112 row(s) Took 0.0535 seconds
Ищет в каждой строке столбец, определенный двумя обязательными аргументами: семейство столбцов и квалификатор столбца. Если такой столбец найден (референтный столбец), то возвращает все пары ключ/значение из этой строки, имеющие такую же метку времени как и референтный столбец. Если не найден — не возвращает ничего.
Если задан необязательный третий аргумент (dropDependentColumn
) логического типа, то референтный столбец либо возвращается (при значении false
), либо нет (при значении true
).
Можно задать еще два аргумента: оператор сравнения и компаратор. В этом случае значение столбца также должно пройти проверку сравнения, заданного этими аргументами, чтобы столбец считался референтным.
Принимает два, три или пять аргументов: семейство столбцов (обязательно), квалификатор столбца (обязательно), флаг dropDependentColumn
(логический, необязательно), оператор сравнения и компаратор (последние два аргумента могут быть заданы только совместно).
Синтаксис:
"DependentColumnFilter ('location', 'town')"
"DependentColumnFilter ('location', 'town', true)"
"DependentColumnFilter ('location', 'town', true, =, 'binary:Carlsbad')"
Пример команды:
scan 'people', { FILTER => "DependentColumnFilter ('location', 'town', true, =, 'binary:Carlsbad')" }
Этот фильтр ищет в каждой строке точное значение Carlsbad
в столбце с точным именем location:town
и в случае успеха возвращает остальные пары ключ/значение, имеющие ту же метку времени, опуская саму найденную пару ключ/значение. Результат:
ROW COLUMN+CELL Young Mattie column=location:state, timestamp=2024-07-30T08:10:20, value=NM 1 row(s) Took 0.0269 seconds
Этот пример опирается на поправки, внесенные в примере работы фильтра TimestampsFilter
. Без них фильтр ничего не вернет, поскольку условие сравнения не будет выполнено.
Ищет в каждой строке референтный столбец, определяемый четырьмя обязательными аргументами: семейство столбцов, квалификатор столбца, оператор сравнения и компаратор. Если найден столбец с заданным семейством и квалификатором и его значение удовлетворяет условию сравнения — фильтр возвращает все пары ключ/значение из этой строки. Если найден столбец с заданным семейством и квалификатором, но его значение не удовлетворяет условию сравнения — никакие пары ключ/значение из этой строки не возвращаются. Если референтный столбец не найден — по умолчанию фильтр возвращает все пары ключ/значение из этой строки.
Можно дополнительно совместно задать два аргумента: если первый аргумент (setFilterIfMissing
) имеет значение true
(по умолчанию false
), а референтный столбец не найден — фильтр не возвращает никакие пары ключ/значение из этой строки. Если второй аргумент (setLatestVersionOnly
) имеет значение false
(по умолчанию true
) — проверяются все версии значения референтного столбца на соответствие условию сравнения, а не только последняя.
Принимает четыре или шесть аргументов: семейство столбцов (обязательно), квалификатор столбца (обязательно), оператор сравнения (обязательно), значение для сравнения (обязательно), флаги setFilterIfMissing
и setLatestVersionOnly
(необязательно, совместно).
Синтаксис:
"SingleColumnValueFilter ('location', 'town', =, 'binaryprefix:Al')"
"SingleColumnValueFilter ('location', 'town', =, 'binaryprefix:Al', true, false)"
Пример команды:
scan 'people', { FILTER => "SingleColumnValueFilter ('location', 'town', =, 'binaryprefix:Al', true, false)" }
Этот фильтр ищет в каждой строке значения, начинающиеся с Al
, в столбце с точным именем location:town
, проверяя все версии этих значений. Только в случае успеха он возвращает все пары ключ/значение из этой строки. Результат:
ROW COLUMN+CELL Ball Nelle column=basic:age, timestamp=2024-07-30T08:10:19.297, value=43 Ball Nelle column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ball Nelle column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Ball Nelle column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Bell Leila column=basic:age, timestamp=2024-07-30T08:10:19.297, value=58 Bell Leila column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Bell Leila column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Bell Leila column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Cohen John column=basic:age, timestamp=2024-07-30T08:10:19.297, value=28 Cohen John column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Cohen John column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Cohen John column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Diaz Anne column=basic:age, timestamp=2024-07-30T08:10:19.297, value=57 Diaz Anne column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Diaz Anne column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Diaz Anne column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Howard Florence column=basic:age, timestamp=2024-07-30T08:10:19.297, value=37 Howard Florence column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Howard Florence column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Howard Florence column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Ingram Barbara column=basic:age, timestamp=2024-07-30T08:10:19.297, value=55 Ingram Barbara column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ingram Barbara column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Ingram Barbara column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Jefferson Charlie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 Jefferson Charlie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Jefferson Charlie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Jefferson Charlie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Kennedy Todd column=basic:age, timestamp=2024-07-30T08:10:19.297, value=44 Kennedy Todd column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Kennedy Todd column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Kennedy Todd column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque McGee Isabelle column=basic:age, timestamp=2024-07-30T08:10:19.297, value=48 McGee Isabelle column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA McGee Isabelle column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM McGee Isabelle column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Page Victoria column=basic:age, timestamp=2024-07-30T08:10:19.297, value=30 Page Victoria column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Page Victoria column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Page Victoria column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Phelps Lida column=basic:age, timestamp=2024-07-30T08:10:19.297, value=43 Phelps Lida column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Phelps Lida column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Phelps Lida column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Phillips Helen column=basic:age, timestamp=2024-07-30T08:10:19.297, value=61 Phillips Helen column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Phillips Helen column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Phillips Helen column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Reyes Marc column=basic:age, timestamp=2024-07-30T08:10:19.297, value=25 Reyes Marc column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Reyes Marc column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Reyes Marc column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Roberts Clayton column=basic:age, timestamp=2024-07-30T08:10:19.297, value=52 Roberts Clayton column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Roberts Clayton column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Roberts Clayton column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Ryan Curtis column=basic:age, timestamp=2024-07-30T08:10:19.297, value=58 Ryan Curtis column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ryan Curtis column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Ryan Curtis column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Spencer Lucinda column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Spencer Lucinda column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Spencer Lucinda column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Spencer Lucinda column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Woods Bessie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=47 Woods Bessie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Woods Bessie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Woods Bessie column=location:town, timestamp=2024-07-30T08:10:19.297, value=Albuquerque Yates Douglas column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Yates Douglas column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Yates Douglas column=location:state, timestamp=2024-07-30T08:10:20, value=NM Yates Douglas column=location:town, timestamp=2024-07-30T08:10:20, value=Albuquerque 18 row(s) Took 0.0263 seconds
Работает так же, как и фильтр SingleColumnValueFilter
, за исключением того, что значение референтного столбца никогда не возвращается.
Синтаксис:
"SingleColumnValueExcludeFilter ('location', 'town', =, 'binaryprefix:Al')"
"SingleColumnValueExcludeFilter ('location', 'town', =, 'binaryprefix:Al', true, false)"
Пример команды:
scan 'people', { FILTER => "SingleColumnValueExcludeFilter ('location', 'town', =, 'binaryprefix:Al', true, false)" }
Этот фильтр ищет в каждой строке значения, начинающиеся с Al
, в столбце с точным именем location:town
, проверяя все версии этих значений. Только в случае успеха он возвращает все пары ключ/значение из этой строки, кроме найденной. Результат:
ROW COLUMN+CELL Ball Nelle column=basic:age, timestamp=2024-07-30T08:10:19.297, value=43 Ball Nelle column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ball Nelle column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Bell Leila column=basic:age, timestamp=2024-07-30T08:10:19.297, value=58 Bell Leila column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Bell Leila column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Cohen John column=basic:age, timestamp=2024-07-30T08:10:19.297, value=28 Cohen John column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Cohen John column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Diaz Anne column=basic:age, timestamp=2024-07-30T08:10:19.297, value=57 Diaz Anne column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Diaz Anne column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Howard Florence column=basic:age, timestamp=2024-07-30T08:10:19.297, value=37 Howard Florence column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Howard Florence column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Ingram Barbara column=basic:age, timestamp=2024-07-30T08:10:19.297, value=55 Ingram Barbara column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ingram Barbara column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Jefferson Charlie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 Jefferson Charlie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Jefferson Charlie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Kennedy Todd column=basic:age, timestamp=2024-07-30T08:10:19.297, value=44 Kennedy Todd column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Kennedy Todd column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM McGee Isabelle column=basic:age, timestamp=2024-07-30T08:10:19.297, value=48 McGee Isabelle column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA McGee Isabelle column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Page Victoria column=basic:age, timestamp=2024-07-30T08:10:19.297, value=30 Page Victoria column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Page Victoria column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Phelps Lida column=basic:age, timestamp=2024-07-30T08:10:19.297, value=43 Phelps Lida column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Phelps Lida column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Phillips Helen column=basic:age, timestamp=2024-07-30T08:10:19.297, value=61 Phillips Helen column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Phillips Helen column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Reyes Marc column=basic:age, timestamp=2024-07-30T08:10:19.297, value=25 Reyes Marc column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Reyes Marc column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Roberts Clayton column=basic:age, timestamp=2024-07-30T08:10:19.297, value=52 Roberts Clayton column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Roberts Clayton column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Ryan Curtis column=basic:age, timestamp=2024-07-30T08:10:19.297, value=58 Ryan Curtis column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Ryan Curtis column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Spencer Lucinda column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Spencer Lucinda column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Spencer Lucinda column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Woods Bessie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=47 Woods Bessie column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Woods Bessie column=location:state, timestamp=2024-07-30T08:10:19.297, value=NM Yates Douglas column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Yates Douglas column=location:country, timestamp=2024-07-30T08:10:19.297, value=USA Yates Douglas column=location:state, timestamp=2024-07-30T08:10:20, value=NM 18 row(s) Took 0.0646 seconds
Возвращает только те пары ключ/значение, у которых имя квалификатора столбца находится в диапазоне, заданном аргументами. Края диапазона могут быть определенными или пустыми. После каждого края задается логический аргумент, определяющий, включать ли значение края в диапазон.
Принимает четыре аргумента: левый край диапазона, флаг левого включения, правый край диапазона, флаг правого включения. Если край диапазона пуст, то значение соответствующего ему флага включения не имеет значения.
Синтаксис:
"ColumnRangeFilter ('', true, 'c', false)"
Пример команды:
scan 'people', { FILTER => "ColumnRangeFilter ('', true, 'c', false)" }
Этот фильтр вернет только столбец basic:age
, поскольку следующий по алфавиту квалификатор столбца — это country
, и он не попадает в заданный диапазон. Результат (первые и последние пять строк):
ROW COLUMN+CELL Abbott Delia column=basic:age, timestamp=2024-07-30T08:10:19.297, value=62 Abbott Howard column=basic:age, timestamp=2024-07-30T08:10:19.297, value=24 Abbott Jack column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Adams Clyde column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Aguilar Myrtie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=23 ... Young Della column=basic:age, timestamp=2024-07-30T08:10:19.297, value=21 Young Josephine column=basic:age, timestamp=2024-07-30T08:10:19.297, value=29 Young Mattie column=basic:age, timestamp=2024-07-30T08:10:19.297, value=39 Zimmerman Gene column=basic:age, timestamp=2024-07-30T08:10:19.297, value=35 Zimmerman Madge column=basic:age, timestamp=2024-07-30T08:10:19.297, value=46 997 row(s) Took 0.1788 seconds
Динамическая загрузка кастомных фильтров
HBase в составе ADH поддерживает динамическую загрузку кастомных фильтров. Для использования этой возможности следует задать директорию, содержащую JAR-файлы с кастомными фильтрами:
-
Откройте веб-интерфейс ADCM и выберите ваш кластер ADH.
-
Перейдите в раздел Services → HBase → Primary configuration и включите переключатель Show advanced.
-
Откройте секцию настроек Custom hbase-site.xml и нажмите Add property.
-
В поле имени параметра введите
hbase.dynamic.jars.dir
. В качестве значения параметра укажите путь на ваше усмотрение, например,${hbase.rootdir}/lib
. Нажмите Apply. -
Сохраните конфигурацию, нажав Save → Create, и перезапустите сервис, нажав Actions → Reconfig and graceful restart.
При наличии JAR-файлов с кастомными фильтрами по заданному пути вы сможете использовать их как в консоли HBase shell, так и в Java-приложениях с использованием API HBase.