我不知道如何在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还不是开发者友好的,因为它可以得到。
原文地址:https://www.jb51.cc/xml/293721.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。