gpt4 book ai didi

rest - 使用 HBase REST API 过滤

转载 作者:行者123 更新时间:2023-12-04 14:23:52 26 4
gpt4 key购买 nike

有人知道 HBase REST API 吗?我目前正在编写一个使用 curl 命令从 HBase 插入和读取的程序。尝试阅读时,我使用 curl get 命令,例如

curl -X GET 'http://server:9090/test/Row-1/Action:ActionType/' -h 'Accept:application/json'

这将返回第 1 行中的 Action:ActionType 列。但是,如果我想使用 GET 命令执行与 WHERE 子句等效的操作,则我会卡住。我不确定它甚至可能吗?例如,如果我想查找 Action:ActionType =1 的所有记录。
帮助表示赞赏!

最佳答案

您可以通过在 CURL 请求中使用过滤器(这里是 SingleColumnValueFilter )来做到这一点。

首先,创建一个 XML 文件 ( myscanner.xml ) 描述您的扫描。这里我们要根据限定符值进行过滤,用 EQUAL运算符(operator)) :

<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

关于rest - 使用 HBase REST API 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43121527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com