Я ищу способ использования HBase Filter Language в PHP.
Глава HBase Book о Thrift выглядит формально и предоставляет некоторые фильтры для доступа пользователя к HBase в PHP. Образец кода PHP также представлен на этой странице, но я не могу найти какие-либо API-интерфейсы (например, $client->scannerOpenWithFilterString(...)
). Я даже проверил файл определения бережливости для HBase 0.92.0 , но у него нет интерфейса для scannerOpenWithFilterString
.
Используемые версии: Hadoop 0.20.203.0
, Hbase 0.90.4
и thrift 0.8.0
.
Кто-нибудь знает, как использовать PHP с функциями фильтра для доступа к HBase?
Фильтры Hbase для Thrift API были реализованы в версии 0.92. Существует функция scannerOpenWithScan (), которая принимает 2 параметра – имя таблицы и объект TScan.
Вам нужно сгенерировать php-классы для экономии, используя файл Hbase.thrift, предоставленный в версии hbase 0.92+
thrift -gen php Hbase.thrift
В объекте TScan вы можете установить startRow, stopRow, timestamp, columns, caching и filterString – это именно то, что вам нужно.
Пример: получить строки 00100, 00200 и 00300
$flt = "RowFilter(=, 'regexstring:00[1-3]00')"; $scan = new TScan(array("filterString" => $flt));
или
$scan = new TScan(); $scan->setFilterString($flt);
и наконец
$scanner = $client->scannerOpenWithScan("table_name", $scan); while ($result = $client->scannerGet($scanner)) { ... }
Для получения информации о синтаксисе filterString и доступных фильтрах см. Вложения здесь: https://issues.apache.org/jira/browse/HBASE-4176