HBase REST 过滤器 ( SingleColumnValueFilter )

Posted

技术标签:

【中文标题】HBase REST 过滤器 ( SingleColumnValueFilter )【英文标题】:HBase REST Filter ( SingleColumnValueFilter ) 【发布时间】:2012-03-07 07:25:03 【问题描述】:

我不知道如何在 HBase REST 接口 (HBase 0.90.4-cdh3u3) 中使用过滤器。该文档只是为我提供了“字符串”的架构定义,但没有显示如何使用它。

所以,我可以这样做:

curl -v -H 'Content-Type: text/xml' -d '<Scanner startRow="ddo" stopRow="ddp" batch="1024"/>' 'http://hbasegw:8080/table/scanner'

然后用

检索
curl -s -H "Content-Type: text/xml" http://hbasegw:8080/table/scanner/13293426893883128482b | tidy -i -q -xml

但现在我想使用 SingleColumnValueFilter 并且必须以某种方式在 XML 中对其进行编码。 有人有这方面的例子吗?

谢谢, 马里奥

【问题讨论】:

好的,所以我发现我可以使用 ScannerModel->stringifyFilter() 制作过滤器的 JSON 表示,但它仍然无法工作。 见HBASE-3482,当使用XML格式时,你需要以某种方式对FilterModel进行XML编码......也许你可以根据ScannerModel.java的来源找出正确的格式(特别是内部类FilterModel ) 一个重要的观察:您应该在 Scanner XML 中输入 endRow 而不是 stopRow 【参考方案1】:

Scanner XML 中的过滤器字段是格式为 JSON 的字符串。 由于过滤器的 JSON 中有很多引号,我建议为 curl 的 -d 参数使用单独的文件,以避免单个引用。

curl -v -H "Content-Type:text/xml" -d @args.txt http://hbasegw:8080/table/scanner

文件args.txt在哪里:

<Scanner startRow="cm93MDE=" endRow="cm93MDg=" batch="1024">
    <filter>
    
        "latestVersion":true, "ifMissing":true, 
        "qualifier":"Y29sMQ==", "family":"ZmFtaWx5", 
        "op":"EQUAL", "type":"SingleColumnValueFilter", 
        "comparator":"value":"MQ==","type":"BinaryComparator"
    
    </filter>
</Scanner>

您如何发现 JSON 过滤器字符串的外观?这是一个简单的方法,通过 Java 代码,在给定 HBase 的 Java API 的标准过滤器对象的情况下吐出字符串化过滤器。

SingleColumnValueFilter filter = new SingleColumnValueFilter(
    Bytes.toBytes("family"),
    Bytes.toBytes("col1"),
    CompareFilter.CompareOp.EQUAL,
    Bytes.toBytes("1")
);
System.out.println(ScannerModel.stringifyFilter(filter));

请注意,JSON 和 XML 需要以 Base64 编码的数据。我已经在一张桌子上测试了上面的 curl 命令,它工作得很好。

如果您想知道,是的,用于扫描仪的 REST API 还没有尽可能地对开发人员友好。

【讨论】:

以上是关于HBase REST 过滤器 ( SingleColumnValueFilter )的主要内容,如果未能解决你的问题,请参考以下文章

HBase:Thrift vs Rest 性能

sh 使用HBase REST API进行的实验

如何通过 HBase REST 服务获取 Phoenix 表数据

HBase REST 返回 json 而不是 xml

markdown HBase Stargate REST API扫描程序筛选器示例

markdown HBase Stargate REST API扫描程序筛选器示例