2016-04-22 8 views
1

Gibt es eine Möglichkeit, die ersten n Zeilen mit BatchScanner für jeden Bereich zu erhalten.BatchScanner mit Grenzen pro Bereich

Ich möchte neueste Benutzeraktivität für mehrere Benutzer bis sagen 100 ganze Zeilen pro Benutzer ziehen. Der Zeilenschlüssel beginnt mit der Benutzer-ID und dem Zeitstempel.

Danke,

Dejan

Antwort

1

Dejan - Werfen Sie einen Blick auf die WholeRowIterator. Hier ist ein Beispielcode, wie Sie es verwenden würden.

Connector conn = getConnector(); 
BatchScanner bs = conn.createBatchScanner("mytable", new Authorizations(), 4); 
IteratorSetting iterator = new IteratorSetting(100, WholeRowIterator.class); 
bs.addScanIterator(iterator); 

for (Entry<Key,Value> entry : bs) { 
    SortedMap<Key,Value> row = WholeRowIterator.decodeRow(entry.getKey(), entry.getValue()); 
} 
+0

Das ziemlich nahe ist, aber wenn man die ersten N Zeilen möchten, können Sie den Scanner wollen statt: Scanner bs = conn.createScanner ("mytable", neue Berechtigungen()); Sie können auch bs.setBatchSize (N) verwenden, wenn Sie wissen, dass Sie nur N Zeilen haben möchten. – billie

+0

Ahh, guter Punkt! Ich habe nicht über die Probleme nachgedacht, die ein BatchScanner erzeugen könnte. Ein Scanner anstelle eines BatchScanners gibt Ihnen definitiv die 100 letzten Datensätze (in einer Tabelle, in der die letzten Zeilen zuerst sortiert werden) – elserj

+0

Aus Leistungsgründen möchte ich BatchScanner verwenden. Ich muss die ersten 100 Ergebnisse für mehrere Benutzer erhalten. Mit Scanner-Daten wird jeweils ein Benutzer erfasst. Natürlich kann ich mehrere Threads machen, um Daten mit dem Scanner zu sammeln. Ich hatte gehofft, zusätzliche Komplexität mit BatchScanner zu vermeiden. – dejan

Verwandte Themen