2017-12-23 12 views
2

Ich habe einen Strom Einrichtung wie dieser mit Apache Flink 1.4 beginnt mit Datastream dann keyBy dann Fenster dann AggregatGibt es eine foldLeft Operator Äquivalent auf einem 1,4 Apache Flinkdatastream

der Ausgang des Aggregats Betrieb ein AggregateResult-Objekt , so dass der Strom, so wie er jetzt endet, vom Typ SingleOutputStreamOperator

Was ich als nächstes tun möchte, ist das Äquivalent einer Scala foldLeft. Gibt es einen Operator, der diese Funktionalität bereitstellt?

Dank

Antwort

1

Flink 1.4 stellt die AggregateFunction, die zu einem foldLeft ähnlich ist.

Die API of the AggregateFunction funktioniert wie folgt: Der Anfangswert (oder Startwert) ist in der createAccumulator() Methode definiert. Der Akkumulator enthält den teilweise aggregierten Wert. Die Werte werden mit der Methode add() in den Akkumulator aggregiert. Schließlich wird das Ergebnis aus dem Akkumulator durch die getResult()-Methode berechnet.

Der Unterschied zu einem foldLeft ist, dass ein AggregateFunction seine Akkumulatoren (Partialaggregate) über seine merge()-Methode zusammenführen kann. Die Möglichkeit, partielle Aggregate zusammenzufassen, ist für einige Fenstertypen (Sitzungsfenster) erforderlich und für bestimmte Optimierungen nützlich.

Verwandte Themen