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 还没有尽可能地对开发人员友好。