Apache Flink ist ein Open-Source-Stream-Verarbeitungsframework zur Verarbeitung unbegrenzter und begrenzter Datenströme. Im Zeitfensterbetrieb von Flink ist der Trigger ein sehr wichtiges Konzept, das bestimmt, wann das Fenster berechnet und die Ergebnisse ausgegeben werden sollen. Trigger definieren die Bedingungen dafür, wann ein Fenster zur Verarbeitung bereit ist (d. h. wann Berechnungen ausgelöst werden). Fenstertyp
Zeitfenster(Zeitfenster): Auf Zeitteilung basierende Fenster, wie z. B. rollende Zeitfenster (Tumbling Time Windows) und gleitende Zeitfenster (Sliding Time Windows).
Ereigniszeitfenster(Ereigniszeitfenster): Ein auf Ereigniszeitstempeln basierendes Fenster, das Daten außerhalb der Reihenfolge verarbeiten kann.
Auslösen
Mithilfe von Triggern werden Bedingungen definiert, wann ein Fenster zur Berechnung bereit ist. Flink bietet einige integrierte Trigger und ermöglicht es Benutzern, Trigger nach Bedarf anzupassen.
Eingebauter Auslöser
VerarbeitungszeitTrigger: Ein auf der Verarbeitungszeit basierender Trigger, der immer dann ausgelöst wird, wenn das angegebene Zeitintervall erreicht ist.
Ereigniszeitauslöser : Auslöser basierend auf der Ereigniszeit, ausgelöst, wenn die Endzeit des Fensters erreicht ist. Dies eignet sich für die Verarbeitung geordneter oder ungeordneter Ereigniszeit-Datenströme.
Zähltrigger: Auslöser basierend auf der Anzahl der Elemente, ausgelöst, wenn die Anzahl der Elemente im Fenster den angegebenen Schwellenwert erreicht.
Benutzerdefinierter Auslöser
Benutzer können benutzerdefinierte Trigger erstellen, indem sie die Trigger-Schnittstelle implementieren. Benutzerdefinierte Trigger können basierend auf komplexer Logik entscheiden, wann Fensterberechnungen ausgelöst werden. Benutzerdefinierte Trigger müssen normalerweise die folgenden Methoden implementieren:
aufElement(Element, Zeitstempel, Fenster, ctx): Wird aufgerufen, wenn ein Element zum Fenster hinzugefügt wird.
beiEreigniszeit(time, window, ctx, out): Wird aufgerufen, wenn die Ereigniszeit des Fensters erreicht ist.
beiVerarbeitungszeit(time, window, ctx, out): Wird aufgerufen, wenn die Verarbeitungszeit des Fensters erreicht ist.
beim Zusammenführen(andere): Wird aufgerufen, wenn zwei Fenster zusammengeführt werden (z. B. in Sitzungsfenstern verwendet).
kann zusammenführen(): Gibt an, ob der Trigger das Zusammenführen von Fenstern unterstützt.
Wirkung
Die Hauptfunktion von Triggern besteht darin, den Berechnungszeitpunkt von Fenstern zu steuern, wodurch die Fensteroperationen von Flink flexibler und leistungsfähiger werden. Durch die Auswahl der richtigen Trigger können Sie die Leistung und Ressourcennutzung Ihrer Stream-Verarbeitungsanwendungen optimieren.
Beispiel
Hier ist ein einfaches Beispiel für die Verwendung von Flink-Fenstern und -Triggern (vorausgesetzt, die Java-API wird verwendet):