2017-05-22 2 views
1

Ich bin neu in HBase REST API und versuchte, einen Weg zu finden, dass ich eine Reihe von Ergebnissen für eine Menge erhalten konnte von Id's würde ich mit einem Get-Kommando machen. Als Batch-Verarbeitung würde die Leistung meines Codes verbessern, anstatt eine Get-Anforderung für jede ID für eine Tabelle zu machen.HBase lesen: Um Leistung zu verbessern, wie Stapelverarbeitung von Get-Anfrage mit Hbase Java REST API

Einige Beispiel Hbase Java Rest API-Code wäre hilfreich.

danke, im voraus.

Antwort

0

Sie sollten es mit Scanner (HBase Such-API) erreichen können. Unten z.B.

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(); 

Es gibt viele Artikel verfügbar, um mehr Details zu erhalten, z. https://www.cloudera.com/documentation/enterprise/5-4-x/topics/admin_hbase_scanning.html

+1

Wie wäre es, wenn ich einen Satz von IDs und ich möchte bekommen die Ergebnisse für diese Gruppe von IDs nur ?? – TigerShark

0

Sie können für jede ID einzeln Get Anfragen durchführen.

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

oder Filter erstellen und Anforderung mit dem angegebenen Filter durchführen:

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> 

Mehr über REST-API in cloudera docs: https://www.cloudera.com/documentation/enterprise/5-9-x/topics/admin_hbase_rest_api.html

Verwandte Themen