簡體   English   中英

HBase 讀取:為了提高性能,如何使用 hbase java REST api 對 get 請求進行批處理

[英]HBase read : To improve on performance , how to do batch processing of get request using hbase java REST api

我是 HBase REST API 的新手,並試圖找到一種方法,我可以通過 get 命令獲得一組 Id 的結果。 由於批處理將有助於提高我的代碼的性能,而不是為表的每個 id 發出 get 請求。

一些示例 Hbase java rest api 代碼會有所幫助。

提前致謝。

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

做你正在尋找的。 您應該會看到巨大的性能改進。

如果您只想知道密鑰是否存在:

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

這可能比get更快,因為它只返回truefalse

您應該能夠使用掃描儀(HBase 搜索 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

您可以為每個 ID 單獨執行一組Get請求。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM