加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – HBase REST过滤器(SingleColumnValueFilter)

发布时间:2020-12-16 01:55:27 所属栏目:百科 来源:网络整理
导读:我不知道如何在HBase REST接口(HBase 0.90.4-cdh3u3)中使用过滤器。文档只是给我一个“字符串”的模式定义,但不显示如何使用它。 所以,我能够这样做: curl -v -H 'Content-Type: text/xml' -d 'Scanner startRow="ddo" stopRow="ddp" batch="1024"/' 'htt
我不知道如何在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中以某种方式进行编码。
有没有人有这样的例子?

谢谢,
马里奥

扫描器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中提取了一个标准的Filter对象,从而输出了字符串过滤器。

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还不是开发者友好的,因为它可以得到。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读