2011-12-26 5 views
1

Я ищу способ использования языка фильтра HBase в PHP.Язык фильтра HBase в PHP с Thrift

HBase Book's chapter on Thrift представляется формальным и предоставляет некоторые фильтры для доступа пользователя к HBase в PHP. Образец кода PHP также представлен на этой странице, но я не могу найти никаких API-интерфейсов (например, $client->scannerOpenWithFilterString(...)). Я даже проверил thrift definition file for HBase 0.92.0, но у него нет интерфейса для scannerOpenWithFilterString.

Используемые версии: Hadoop 0.20.203.0, Hbase 0.90.4 и thrift 0.8.0.

Кто-нибудь знает, как использовать PHP с функциями фильтра для доступа к HBase?

+0

Это может быть дубликат [Фильтры в HBASE] (http://stackoverflow.com/questions/5348721/filters-in-hbase). – PPvG

+0

Добро пожаловать в StackOverflow :-). Чтобы убедиться, что вы получите быстрые полезные ответы, обязательно следуйте советам в [ask]. – PPvG

ответ

3

Фильтры Hbase для Thrift API были реализованы в версии 0.92 Существует функция с именем scannerOpenWithScan(), которая принимает 2 параметра - имя таблицы и объект TScan.

Вы должны генерировать классы PHP для бережливости с помощью Hbase.thrift файла, при условии, в HBase 0.92+ релиз

thrift -gen php Hbase.thrift 

В TSCAN объекта можно установить StartRow, stopRow, метка времени, колонны, кэширования и 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