Mar*_*rio 38 xml rest hadoop hbase stargate
我无法弄清楚如何在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'
Run Code Online (Sandbox Code Playgroud)
然后检索
curl -s -H "Content-Type: text/xml" http://hbasegw:8080/table/scanner/13293426893883128482b | tidy -i -q -xml
Run Code Online (Sandbox Code Playgroud)
但是现在我想使用SingleColumnValueFilter并且必须以某种方式在XML中进行编码.有没有人有这方面的例子?
谢谢,马里奥
And*_*ltz 11
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>
Run Code Online (Sandbox Code Playgroud)
您如何发现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));
Run Code Online (Sandbox Code Playgroud)
请注意,JSON和XML需要在Base64中编码的数据.我已经在桌面上测试了上面的curl命令,它运行得很好.
如果你想知道,是的,扫描仪的REST API还不像开发人员那样友好.
| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |