2016-06-01 17 views
1

Ich versuche, Datensätze aus HBase-Tabelle in meinem Java-Mapper zu lesen. Ich möchte den letzten Datensatz ermitteln, um eine Operation auszuführen. Wie können wir den letzten Datensatz identifizieren? Ich habe einen Zero Reducer. Ich kann nicht alle Aufzeichnungen im Speicher halten.Wie der letzte Datensatz in Mapper beim Abrufen von Daten aus HBase zu erkennen ist Tabelle

+1

Können Sie Ihren Anwendungsfall ein wenig mehr erarbeiten. Was versuchst du zu erreichen? Möchten Sie den letzten Datensatz in * jedem * Mapper oder letzten Datensatz * aller * Mapper finden. (Natürlich ist das eine falsche Richtung) – Shyam

+0

Ich versuche Datensatz für Datensatz zu lesen und Aggregationen durchzuführen, indem ich die Datensätze gruppiere. –

+0

@BalakrishnaD, beantwortet Ihre Antwort nicht wirklich Shyams Frage –

Antwort

0

Sie können bestimmen, wann ein Mapper seinen endgültigen Datensatz verarbeitet hat, wenn er seine Bereinigungs Methode aufruft:

cleanup(org.apache.hadoop.mapreduce.Mapper.Context context) 

https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/mapreduce/Mapper.html

Dies gibt Ihnen die Möglichkeit, bestimmen per-Mapper, wenn es hat verarbeitet alle seine Schlüssel/Werte und ergreifen einige Maßnahmen.

Wenn Sie versuchen, zu aggregieren, ohne eine Reduzierungsstufe zu verwenden, und Sie HBase lesen, würde ich annehmen, dass Sie einige Garantien über die Gruppierungen der Daten haben, die auch helfen würden. Zum Beispiel könnten Sie nach einer Änderung des Schlüssels suchen, indem Sie einen Mapper eingeben, und Sie würden wissen, dass Sie alle Schlüssel erhalten haben, die gleich sind.

+0

Ich habe Cleanup-Methode überschrieben und es hat funktioniert. Danke @Binary Nerd –