2016-06-15 4 views
3

Wenn ein Element ankommt, das die Wasserzeichenbedingung verletzt, wie wird das Ereignis behandelt? Ist es weggeworfen? Oder wird das Ereignis weiterhin mit nachfolgenden Fensterfunktionen, die mit dem späten Ereignis neu berechnet wurden, stromabwärts weitergegeben?Apache Flink: Wie werden späte Ereignisse gehandhabt?

Die Dokumentation bestätigt, dass späte Ereignisse auftreten, aber nicht, wie sie behandelt werden. https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/event_time.html

Antwort

1

sind standardmäßig spät Elemente gelöscht, wenn das Wasserzeichen über das Ende des Fensters. Flink erlaubt es jedoch, eine maximale erlaubte Verspätung für Fensteroperatoren anzugeben. Zulässige Verspätung gibt an, um wie viel Uhr Elemente spät sein dürfen, bevor sie gelöscht werden, und der Standardwert ist 0. Elemente, die nach dem Wasserzeichen ankommen, haben das Ende des Fensters überschritten, aber bevor es das Ende des Fensters überschreitet, zuzüglich der zulässigen Verspätung. werden immer noch zum Fenster hinzugefügt. Je nach verwendetem Auslöser kann ein spätes, aber nicht zurückgelassenes Element dazu führen, dass das Fenster erneut ausgelöst wird. Dies ist der Fall für den EventTimeTrigger.

Damit das funktioniert, behält Flink den Zustand von Fenstern bei, bis die erlaubte Verspätung abläuft. Sobald dies passiert, entfernt Flink das Fenster und löscht seinen Status.

Sie können den Lebenszyklus hier überprüfen. https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html#window-lifecycle