您可以通过在 CURL 请求中使用过滤器(此处为 SingleColumnValueFilter)来做到这一点。
首先,创建一个描述您的扫描的 XML 文件 (myscanner.xml)。这里我们要根据限定符值进行过滤,使用EQUAL运算符):
<Scanner batch="10">
<filter>
{
"type": "SingleColumnValueFilter",
"op": "EQUAL",
"family": "<FAMILY_BASE64>",
"qualifier": "<QUALIFIER_BASE64>",
"latestVersion": true,
"comparator": {
"type": "BinaryComparator",
"value": "<SEARCHED_VALUE_BASE64>"
}
}
</filter>
</Scanner>
你应该用你自己的值替换<FAMILY_BASE64>、<QUALIFIER_BASE64>和<SEARCHED_VALUE_BASE64>(值必须转换为base64,你可以做echo -en ${FAMILY} | base64。
然后,使用此 XML 文件作为数据向 HBase REST API 提交 CURL 请求:
curl -vi -X PUT \
-H "Content-Type:text/xml" \
-d @myscanner.xml \
"http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/"
这个请求应该返回一个 Scanner 对象,比如:
[...]
Location: http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/149123344543470bea57a
然后使用给定的扫描器对结果进行迭代(多次请求迭代):
curl -vi -X GET \
-H "Accept: text/xml" \
"http://${HOST}:${REST_API_PORT}/${TABLE_NAME}/scanner/149123344543470bea57a"
您也可以接受"application/json" 而不是 XML。请注意,结果是 base64 编码的。
来源:
HBase REST Filter ( SingleColumnValueFilter )
您可以使用的过滤器列表:https://gist.github.com/stelcheck/3979381
关于 HBase REST API 的 Cloudera 文档:https://www.cloudera.com/documentation/enterprise/5-9-x/topics/admin_hbase_rest_api.html