2017-06-05 116 views
1

我們計劃使用Apache Flink在多種類型的對象上執行實時聚合。 我們需要支持諸如總和,最大值,最小值,平均值等幾種類型的聚合 - 目前沒有什麼特別的東西Apache Flink:在一個窗口中計算並輸出多個值

我們的要求是將數據輸出到kafka,其中一條消息包含多個聚合值,用於多個對象屬性。

例如,該消息應包括最後10分鐘

總和,最大值和屬性的平均值,也之和屬性B的最小值

我的問題是什麼是最好的方式Flink實施這樣的要求?

我們雖然要使用自定義窗口函數,該函數將在窗口末尾的所有對象上運行,並自行計算所有需要的值並輸出一個新的對象,該對象包含所有這些聚合值。 我們關注這種解決方案的事情是在具有持有等待窗口火災內存中的所有窗口數據的內存消耗的影響(我們將在同一時間開設了許多這樣的窗口)

任何建議/意見非常感謝!

感謝

回答

1

最好的辦法是使用增量聚集來計算數量,總和,最小值和最大值爲每個窗口 - 你可以計算平均在你的窗函數,獲得的款項和計。這樣,您需要保留的唯一狀態就是這四個值(計數,總和,最小值和最大值),而不必緩衝整個流以便在窗口末尾進行處理。

This example from the documentation應該足以讓你開始。

+0

Thanks !,會檢查這個建議 – ranef