PHP 中的 HBase 过滤器语言与 Thrift

发布于 2024-12-22 18:34:14 字数 656 浏览 0 评论 0原文

我正在寻找一种在 PHP 中使用 HBase 过滤器语言的方法。

HBase Book 的 Thrift 章节 看起来很正式,并为用户在 PHP 中访问 HBase 提供了一些过滤器。此页面还提供了示例 PHP 代码,但我在 thrift 中找不到任何 API(例如 $client->scannerOpenWithFilterString(...))。我什至检查了 HBase 0.92.0的thrift定义文件,但它没有接口scannerOpenWithFilterString

使用的版本:Hadoop 0.20.203.0Hbase 0.90.4thrift 0.8.0

有谁知道如何使用带有过滤功能的PHP访问HBase?

I'm looking for a way to use the HBase Filter Language in PHP.

The HBase Book's chapter on Thrift seems formal and provides some filters for user to access HBase in PHP. A sample PHP code are also provided in this page, but I can not find any APIs in thrift (such as $client->scannerOpenWithFilterString(...)). I even checked the thrift definition file for HBase 0.92.0, but it has no interface for scannerOpenWithFilterString.

Versions used: Hadoop 0.20.203.0, Hbase 0.90.4 and thrift 0.8.0.

Does anyone know how to use PHP with filter features to access HBase?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城旧梦 2024-12-29 18:34:14

Thrift API 的 Hbase 过滤器在 v.0.92 中实现
有一个名为 ScannerOpenWithScan() 的函数,它有 2 个参数 - 表名称和 TScan 对象。

您需要使用 Hbase.thrift 文件生成 thrift 的 php 类,该文件在 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

Hbase filters for Thrift API were implemented in v.0.92
There's a function named scannerOpenWithScan(), which takes 2 parameters - table name and TScan object.

You need to generate php classes for thrift using Hbase.thrift file, provided in hbase 0.92+ release

thrift -gen php Hbase.thrift 

In TScan object you can set startRow, stopRow, timestamp, columns, caching and filterString - which is exactly what you need.

Example: get rows 00100, 00200 and 00300

$flt = "RowFilter(=, 'regexstring:00[1-3]00')";
$scan = new TScan(array("filterString" => $flt));

or

$scan = new TScan();
$scan->setFilterString($flt);

and finally

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

For information about filterString syntax and available filters see attachments here:
https://issues.apache.org/jira/browse/HBASE-4176

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文