2017-11-04 3 views
2

Ich werte Flink speziell für die Streaming-Fenster-Unterstützung für mögliche Alert-Generierung aus. Meine Sorge ist der Speicherverbrauch, also wenn jemand mit diesem helfen könnte, würde es geschätzt werden.Flink Stream Fenster Speicherverbrauch

Zum Beispiel wird diese Anwendung möglicherweise eine erhebliche Menge an Daten aus dem Stream in einem gegebenen Tumbling-Fenster von etwa 5 Minuten verbrauchen. Hätten wir zum Zeitpunkt der Auswertung, wenn es zum Beispiel eine Million Dokumente gab, die den Kriterien entsprachen, alle in den Speicher geladen?

würde der allgemeine Fluss sein:

producer -> kafka -> flinkkafkaconsumer -> table.window(Tumble.over("5.minutes").select("...").where("...").writeToSink(someKafkaSink)

Außerdem, wenn es eine klare Dokumentation ist, die wie mit Speicher beschreibt in diesen Fällen behandelt wird, die ich übersehen hat, dass jemand, dass würde sein könnte hilfreich.

Dank

Antwort

3

Die Menge an Daten, die für eine Gruppenfenster-Aggregation hängt von der Art des Aggregations gespeichert ist. Viele Aggregationsfunktionen wie COUNT, SUM und MIN/MAX können voraggregiert werden, d. H. Sie müssen nur einen einzelnen Wert pro Fenster speichern. Andere Aggregationsfunktionen wie MEDIAN oder bestimmte benutzerdefinierte Aggregationsfunktionen müssen alle Werte speichern, bevor sie ihr Ergebnis berechnen können.

Die Daten, die für eine Aggregation gespeichert werden müssen, werden in einer state backend gespeichert. Abhängig von der Wahl des Status-Backends können die Daten im Arbeitsspeicher auf dem JVM-Heap oder auf dem Datenträger in einer RocksDB-Instanz gespeichert werden.

Tabellen-API-Abfragen werden auch von einem relationalen Optimierer (basierend auf Apache Calcite) optimiert, sodass Filter so weit wie möglich zu den Quellen verschoben werden. Abhängig vom Prädikat kann der Filter vor der Aggregation angewendet werden.

Schließlich benötigen Sie einen groupBy() zwischen window() und select() in Ihrem Beispiel Abfrage hinzuzufügen (die Beispiele in der docs sehen).

+0

Danke, der von Ihnen zur Verfügung gestellte Backend-Link scheint der zu sein, nach dem ich suche. – Sam

Verwandte Themen