2012-04-10 7 views
0

Gibt es eine einfache Möglichkeit, einige Werte neu zu berechnen, nachdem ein Einfügen aufgetreten ist? Ich habe eine Tabelle mit mehreren Spaltenfamilien, von denen eine statistisch ist. Ich möchte den ursprünglichen Datensatz einfügen und HBeas-spezifische Funktionen haben, um die Werte offline zu berechnen - ohne den Einsatz zu blockieren.Nach dem Einfügen in Hbase-Tabelle einige Spalten neu berechnen

Angenommen, ich lege einige Dateien in eine hbase-Tabelle und möchte Informationen über die Anzahl der Zeilen in ihnen und die dort gespeicherten Daten haben.

Ich habe in RegionObserver und seine PreGet-Methode untersucht. Diese Lösung funktioniert, aber ich fürchte, sie blockiert die tatsächliche Einfügung, bis die Berechnung abgeschlossen ist.

Antwort

1

Verwenden Sie die postPut-Methode. Sie können here

+0

Das scheint ziemlich offensichtlich, aber wenn ich postPut benutze, kann ich die gespeicherten Werte nicht aktualisieren. Muss ich einen weiteren vollständigen Put-Befehl ausgeben, oder genügt es, das eingehende Put-Objekt zu ändern? –

+0

postPut (wie der Name schon sagt :)) tritt nach dem Setzen auf, also wenn du etwas anderes schreiben willst brauchst du ein neues. Der Vorteil ist, dass die Latenz des ursprünglichen Updates nicht beeinflusst wird. beachte, dass hbase keine ACID-Datenbank ist - es ist besser geeignet für eventuelle Konsistenz-Setups –

+0

Ok, ich habe das - ich habe hier ein Beispiel gefunden: http://ueshin.github.com/hbase-coprocessors/apidocs/ index.html. Als Nebenfrage - wie kann ich Koprozessoren bequem testen? Idealerweise wäre das mit Unit-Tests. Ich habe in HBase-Tests untersucht: src/test/java/org/apache/hadoop/hbase/Koprozessor/TestRegionObserverStacking.java, und es zeigt eine vernünftige Möglichkeit, dies zu tun, aber wenn ich start() -Methode den gesamten Zookeeper-Cluster implementieren ist notwendig, und das bringt HBase und DFS - das ist schwer. –

1

Versuchen Apache Pig eine kurze Einführung in HBase der Coprozessoren sehen, das ist am besten geeignet für stasticl Berechnungen und kann in lokalen als auch mapred Modus

Für weitere Einzelheiten ausführen können Sie besuchen

http://pig.apache.com

+0

Nein, das ist keine Option. Ich brauche HBase. –

Verwandte Themen