我正在寻找一种在PHP中使用HBase过滤语言的方法。
HBase Book的chapter on Thrift似乎是正式的,并提供了一些过滤器供用户在PHP中访问HBase。此页面中还提供了示例PHP代码,但我在thrift中找不到任何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 :(得分:3)
Thrift API的Hbase过滤器在v.0.92中实现 有一个名为scannerOpenWithScan()的函数,它有2个参数 - 表名和TScan对象。
你需要使用hbase 0.92+发布中提供的Hbase.thrift文件为thrift生成php类
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