Фильтр с использованием HBase REST API
Кто-нибудь знает что-нибудь о REST API HBase? В настоящее время я пишу программу, которая вставляет и считывает данные из HBase с помощью команд curl. При попытке чтения я использую команду curl get, например
curl -X GET 'http://server:9090/test/Row-1/Action:ActionType/' -h 'Accept:application/json'
Возвращает столбец Action: ActionType из строки-1. Если я хочу сделать эквивалент предложения WHERE с помощью команды GET, я застрял, однако. Я не уверен, что это вообще возможно? Если я хочу найти все записи, где Action: ActionType =1, например. Помощь ценится!
1 ответ:
Вы можете сделать это с помощью фильтра (здесь a
SingleColumnValueFilter
) в вашем запросе CURL.Сначала создайте XML-файл (
myscanner.xml
), описывающий сканирование. Здесь мы хотим фильтровать по значению квалификатора с помощью оператораEQUAL
):<Scanner batch="10"> <filter> { "type": "SingleColumnValueFilter", "op": "EQUAL", "family": "<FAMILY_BASE64>", "qualifier": "<QUALIFIER_BASE64>", "latestVersion": true, "comparator": { "type": "BinaryComparator", "value": "<SEARCHED_VALUE_BASE64>" } } </filter> </Scanner>
Вы должны заменить
<FAMILY_BASE64>
,<QUALIFIER_BASE64>
и<SEARCHED_VALUE_BASE64>
с вашими собственными значениями (значения должны быть преобразованы в base64, вы можете сделатьecho -en ${FAMILY} | base64
.Затем отправьте запрос CURL в HBase REST API с этим XML-файлом в виде данных:
curl -vi -X PUT \ -H "Content-Type:text/xml" \ -d @myscanner.xml \ "http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/"
Этот запрос должен вернуться объект сканера, например:
[...] Location: http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/149123344543470bea57a
Затем используйте данный сканер для перебора результатов (запрос многократного перебора):
curl -vi -X GET \ -H "Accept: text/xml" \ "http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/149123344543470bea57a"
Вы также можете принять
"application/json"
вместо XML. Обратите внимание, что результаты кодируются base64.Источники:
HBase REST Filter (SingleColumnValueFilter)
Список фильтров, которые вы можете использовать: https://gist.github.com/stelcheck/3979381
Документация Cloudera о HBase REST API : https://www.cloudera.com/documentation/enterprise/5-9-x/topics/admin_hbase_rest_api.html