hbase read:为了提高性能,如何使用hbase javarestapi对get请求进行批处理

wkftcu5l  于 2021-06-01  发布在  Hadoop
关注(0)|答案(3)|浏览(392)

我是hbase restapi的新手,正在尝试找到一种方法,我可以通过get命令获得一组id的结果。因为批处理将有助于提高代码的性能,而不是对表的每个id发出get请求。
一些示例hbase javarestapi代码可能会有所帮助。
提前谢谢。

acruukt9

acruukt91#

Result[] results = table.get(List<Get> gets)

做你想做的事。您应该会看到性能的巨大改进。
如果您只想知道密钥是否存在:

boolean[] exists = exists(List<Get> gets);

这比 get 因为它只会回来 true 或者 false .

jum4pzuy

jum4pzuy2#

您可以执行一组 Get 分别请求每个id。

curl -vi -X GET \
         -H "Accept: text/xml" \
         "http://example.com:20550/users/row1"

或创建筛选器并使用指定的筛选器执行请求:

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

<Scanner batch="100">
  <filter>
    {
      "type": "PrefixFilter",
      "value": "row_id_starts_with"
    }
  </filter>
</Scanner>

有关cloudera文档中rest api的更多信息:https://www.cloudera.com/documentation/enterprise/5-9-x/topics/admin_hbase_rest_api.html

4ktjp1zp

4ktjp1zp3#

您应该能够使用scanner(hbase search api)实现它。低于例如。

Scan scan = new Scan();
scan.setTimeRange( lowerBound, upperBound );

 Call it for each Column
scan.addColumn //

scan.setCaching( 1000 ) // how many rows for caching that will be passed to scanners.
ResultScanner scanner = table.getScanner( scan );
Iterator< Result > iterator = scanner.iterator();

有很多文章可以获得更多的细节。https://www.cloudera.com/documentation/enterprise/5-4-x/topics/admin_hbase_scanning.html

相关问题