Flink Streaming-Ereignis Zeitfenster Bestellung

9

Ich stoße auf einige Probleme, die die Semantik rund um das Fenster der Ereigniszeit verstehen. Das folgende Programm generiert einige Tupel mit Zeitstempeln, die als Ereigniszeit verwendet werden und eine einfache Fensteraggregation durchführen. Ich würde erwarten, dass die Ausgabe in der gleichen Reihenfolge wie die Eingabe ist, aber die Ausgabe ist anders angeordnet. Warum ist die Ausgabe in Bezug auf die Ereigniszeit nicht in Ordnung?

%Vor%

Die Eingabe:

%Vor%

Ergebnis:

%Vor%     
bandrews 08.12.2015, 19:04
quelle

1 Antwort

10

Der Grund für dieses Verhalten ist, dass in Flink die Reihenfolge der Elemente (bezogen auf den Zeitstempel) nicht berücksichtigt wird. Nur die Korrektheit von Wasserzeichen und ihre Beziehung zu den Zeitstempeln von Elementen ist wichtig für Operationen, die Zeit berücksichtigen, da die Wasserzeichen normalerweise die Berechnung in zeitbasierten Operationen auslösen.

In Ihrem Beispiel speichert der Fensteroperator alle Elemente aus der Quelle in internen Fensterpuffern. Dann gibt die Quelle ein Wasserzeichen aus, das besagt, dass in der Zukunft keine Elemente mit einem kleineren Zeitstempel ankommen werden. Dies weist den Fensterbediener wiederum an, alle Fenster mit Endzeitstempeln zu verarbeiten, die unter den Wasserzeichen liegen (was für alle Fenster gilt). Sie sendet also alle Fenster (mit beliebiger Reihenfolge) aus und gibt danach selbst ein Wasserzeichen aus. Nachgeschaltete Operationen erhalten selbst die Elemente und können die Verarbeitung durchführen, sobald sie Wasserzeichen erhalten haben.

Das Intervall, in dem Wasserzeichen von Quellen ausgegeben werden, beträgt standardmäßig 200 ms. Mit der kleinen Menge an Elementen, die Ihre Quelle emittiert, werden alle emittiert, bevor das erste Wasserzeichen emittiert wird. In einem realen Anwendungsfall, in dem die Wasserzeichen-Emissionsintervalle viel kleiner als die Fenstergröße sind, würden Sie das erwartete Verhalten von Fenstern in der Reihenfolge ihres Zeitstempels erhalten. Zum Beispiel, wenn Sie alle 500 ms 1 Stunde Windows und Wasserzeichen haben.

    
aljoscha 09.12.2015 14:31
quelle

Tags und Links