尝试在hbase rest api中查找基于列值的筛选

lmvvr0a8  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(424)

嗨,我正在尝试构建restapi来公开驻留在hbase中的数据。为了简单起见,我使用内置的hbase restapihttps://www.cloudera.com/documentation/enterprise/latest/topics/admin_hbase_rest_api.html . 我已经为使用rowkey的搜索工具创建了一个api。但我被困在我剩下的api需要基于列值进行搜索。该文件建议的步骤,但我不能使用它。也没有其他来源可用。我发现hbase java客户机中有一些过滤选项,比如singlecolumnvalue filter和substringcomaparator之类的实用程序。像这样,有什么方法可以在hbase restapi中应用过滤器吗?

dsf9zpds

dsf9zpds1#

粘贴的链接显示了如何使用扫描仪:

curl -vi -X PUT \
         -H "Accept: text/xml" \
         -H "Content-Type:text/xml" \
         -d @filter.txt \
         "http://example.com:20550/users/scanner/"

@stelcheck收集了一些过滤器的用法。所以如果你想用 SingleColumnValueFilter 使用hbase rest api,您的 filter.txt 就像:

<Scanner batch="100">
  <filter>
    {
      "type": "SingleColumnValueFilter",
      "op": "EQUAL",
      "family": "Y2Y=",
      "qualifier": "cQ==",
      "latestVersion": true,
      "comparator": {
        "type": "BinaryComparator",
        "value": "dmFsdWU5"
      }
    }
  </filter>
</Scanner>

这个例子是找到有值的单元格 value9 在列中 cf:q .
更新:
添加示例以分析命令行中的筛选器内容。
如果不想使用文件内容作为数据,只需在命令行中解析内容。
对于上面的例子,它将是:

curl -s -i -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<Scanner batch="100"><filter>{"type": "SingleColumnValueFilter", "op": "EQUAL", "family": "Y2Y=", "qualifier": "cQ==", "latestVersion": true, "comparator": { "type": "BinaryComparator", "value": "dmFsdWU5" } }</filter></Scanner>'  "http://example.com:20550/users/scanner/"

相关问题