带有Thrift的PHP中的HBase过滤语言

时间:2011-12-26 06:40:45

标签: php hbase thrift

我正在寻找一种在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.0Hbase 0.90.4thrift 0.8.0

有谁知道如何使用PHP和过滤器功能来访问HBase?

1 个答案:

答案 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