2016-05-12 21 views
2

Gibt es eine Möglichkeit, am Ende jeder Mikrocharge im DStream in Spark Streaming etwas zu tun? Mein Ziel ist es, die Anzahl der von Spark verarbeiteten Ereignisse zu berechnen. Spark-Streaming gibt mir einige Zahlen, aber der Durchschnitt scheint auch Nullwerte zusammenzufassen (da einige Mikro-Chargen leer sind).Aktionen vor Ende der Mikrocharge in Spark Streaming durchführen

z.B. Ich sammle einige Statistikdaten und möchte sie an meinen Server senden, aber das Objekt, das die Daten sammelt, existiert nur während eines bestimmten Stapels und wird von Grund auf für den nächsten Stapel initialisiert. Ich würde gerne meine "Finish" -Methode aufrufen können, bevor der Stapel fertig ist und das Objekt verschwunden ist. Sonst verliere ich die Daten, die nicht an meinen Server gesendet wurden.

+0

Sie haben einige Code Beispiel dafür, was für Sie arbeitet nicht? – maasg

+0

Es ist etwas schwierig zu erklären. Wir verwenden unseren zuvor in Java geschriebenen Code. Es ist in der map-Funktion eingebettet. Unser Operator, der Leistungsdaten sammelt und an unseren Server sendet, wird bei jedem neuen Batch neu initialisiert. Es wäre gut, in der Lage zu sein, Daten an unseren Server zu senden, bevor unser Operator "getötet" wird. – chAlexey

Antwort

0
+0

Das scheint eine ziemlich gute Richtung zu sein. Ich werde es definitiv am Wochenende ausprobieren. :) – chAlexey

+0

Es war ein guter Rat, ABER: ein solcher Listener wird vom Treiber initialisiert. Da mein Code auf einem Executor ausgeführt wird, muss ich meine "Finish" -Funktion auf einem Executor aufrufen. Auf diese Weise erhalte ich bei solchen Ereignissen keine Aktualisierung, da die Stapelverarbeitung abgeschlossen ist. Kennen Sie eine mögliche Problemumgehung? – chAlexey