2017-06-05 1166 views
1

我们计划使用Apache Flink在多种类型的对象上执行实时聚合。 我们需要支持诸如总和,最大值,最小值,平均值等几种类型的聚合 - 目前没有什么特别的东西Apache Flink:在一个窗口中计算并输出多个值

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

例如,该消息应包括最后10分钟

总和,最大值和属性的平均值,也之和属性B的最小值

我的问题是什么是最好的方式Flink实施这样的要求?

我们虽然要使用自定义窗口函数,该函数将在窗口末尾的所有对象上运行,并自行计算所有需要的值并输出一个新的对象,该对象包含所有这些聚合值。 我们关注这种解决方案的事情是在具有持有等待窗口火灾内存中的所有窗口数据的内存消耗的影响(我们将在同一时间开设了许多这样的窗口)

任何建议/意见非常感谢!

感谢

回答

1

最好的办法是使用增量聚集来计算数量,总和,最小值和最大值为每个窗口 - 你可以计算平均在你的窗函数,获得的款项和计。这样,您需要保留的唯一状态就是这四个值(计数,总和,最小值和最大值),而不必缓冲整个流以便在窗口末尾进行处理。

This example from the documentation应该足以让你开始。

+0

Thanks !,会检查这个建议 – ranef

相关问题