2016-07-13 10 views
1

Gibt es eine Möglichkeit, die Gesamtzahl der Zeilen sequentieller Daten zu begrenzen, wenn ein Scan der Daten durchgeführt wird?HBase - Java Client Limit Scan Ergebnisse Erläuterung?

Hinweise:

  • I mit 500.000 Gesamt Reihen arbeiten bin
  • Ich habe beide setMaxResultSize und setMaxResultsPerColumnFamily versucht. Dies erweist sich als ineffektiv (es scheint etwas Verhalten zu geben, wenn beide auf niedrige Zahlen gesetzt sind oder setMaxResultSize größer ist. Was ist die Beziehung zwischen diesen beiden Funktionen?)
  • Ich habe mit dem Festlegen eines PageFilter (Größe 10) gearbeitet , und das Verhalten zeigt 5 verschiedene Sequenzdatensätze von 10 an.
  • Ich habe es tatsächlich sudo-working während der Eingabe dieses durch Festlegen der PageFilter-Größe und der setMaxResultSize gleich. Wenn ich beides ändere, entspricht es dem PageFilter. Es wird auch zu einer anderen großen Teilmenge der PageFilter-Größe springen, wenn ich SetMaxResultSize deutlich größer machen.
  • HBase Version ist 1.1.1

Kann jemand besser erklären, was hier und wie geschieht die Ergebnisse erhalten ich will?

Antwort

1

Sie können entweder HBAS-Shell oder HBASE Java-Client verwenden.

1- hbase Schale: Mit diesem Befehl und Rohr, die Ergebnisse in eine Datei und tun "wc -l ..."

count 'Tabellen_Name', 1

2- hbase Java-Client-API

long count=0; 
String row=""; 

for (Result res : scanner) 
{ 
    for (Cell cell : res.listCells()) 
    { 
     row = new String(CellUtil.cloneRow(cell)); 
     if(!row.equals("")) 
      count++; 
    } 
} 
+0

Das Java-Beispiel sieht so aus, als zähle es die nichtleeren Zeilen und schränkt die zurückgegebenen Daten nicht ein. – Rick

+0

können Sie diese Logik ändern. Der Punkt bestand darin, Ihren Scanner zu iterieren, um zu zählen, was immer Sie zählen möchten. – user3338391

+2

Aber ich möchte nichts zählen. Ich möchte die zurückgegebenen Zeilen begrenzen. – Rick