Apache flink ApacheFlink:在一个窗口中计算和输出多个值

Apache flink ApacheFlink:在一个窗口中计算和输出多个值,apache-flink,Apache Flink,我们计划使用ApacheFlink对多种类型的对象执行实时聚合。 我们需要支持几种类型的聚合,如sum、max、min、average等-到目前为止没有什么特别的 我们的需求是将数据输出到kafka,其中一条消息包含多个对象属性的多个聚合值 例如,消息应包括属性A的总和、最大值和平均值,以及过去10分钟内属性B的总和和最小值 我的问题是,用Flink实现这一要求的最佳方式是什么 我们考虑使用一个自定义窗口函数,该函数将在窗口末尾的所有对象上运行,并自行计算所有必需的值,并输出一个包含所有这些聚合

我们计划使用ApacheFlink对多种类型的对象执行实时聚合。 我们需要支持几种类型的聚合,如sum、max、min、average等-到目前为止没有什么特别的

我们的需求是将数据输出到kafka,其中一条消息包含多个对象属性的多个聚合值

例如,消息应包括属性A的总和、最大值和平均值,以及过去10分钟内属性B的总和和最小值

我的问题是,用Flink实现这一要求的最佳方式是什么

我们考虑使用一个自定义窗口函数,该函数将在窗口末尾的所有对象上运行,并自行计算所有必需的值,并输出一个包含所有这些聚合值的新对象。 我们关心的是这个解决方案对内存消耗的影响,必须在内存中保存所有等待窗口启动的窗口数据(我们将同时打开许多这样的窗口)

非常感谢您的任何建议/意见


多亏了

最好的方法是使用增量聚合来计算每个窗口的计数、总和、最小值和最大值,并且您可以在给定总和和计数的情况下,在窗口函数中计算平均值。通过这种方式,您需要保持的唯一状态是这四个值(count、sum、min和max),而不必缓冲整个流以便在窗口结束时进行处理


应该足够让您开始了。

谢谢!,我会核实这个建议