2011-12-26 9 views
1

PHPでHBaseフィルタ言語を使用する方法をお探しです。HBaseフィルタ言語とThriftを使用したPHP

HBaseブックのchapter on Thriftは正式で、ユーザーがPHPでHBaseにアクセスするためのフィルタを提供しています。このページにはサンプル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です。

HBaseにアクセスするためのフィルタ機能を備えたPHPの使い方を知っている人はいますか?

+0

これは、[HBASEのフィルタ](http://stackoverflow.com/questions/5348721/filters-in-hbase)と重複している可能性があります。 – PPvG

+0

StackOverflowへようこそ:-)便利で迅速な回答を得るために、[ask]のヒントに従ってください。 – PPvG

答えて

3

Thrift APIのHbaseフィルタはv.0.92で実装されました scannerOpenWithScan()という名前の関数があります。この関数には、テーブル名とTScanオブジェクトの2つのパラメータがあります。あなたはHBaseの中で提供さHbase.thriftファイルを使用して倹約のためのPHPクラスを生成する必要が

がTSCANオブジェクトで

​​

をリリース0.92+あなたは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); 

と構文や利用可能なフィルタは、ここで添付ファイルを参照してくださいfilterStringについては、最終的

$scanner = $client->scannerOpenWithScan("table_name", $scan); 
while ($result = $client->scannerGet($scanner)) { 
    ... 
} 

https://issues.apache.org/jira/browse/HBASE-4176

関連する問題