【问题标题】:Apache Flink: calculating and outputting multiple values in one windowApache Flink:在一个窗口中计算和输出多个值
【发布时间】:2019-06-20 12:59:31
【问题描述】:

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

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

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

我的问题是用 Flink 实现这种需求的最佳方式是什么?

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

非常感谢任何建议/cmets!

谢谢

【问题讨论】:

    标签: apache-flink


    【解决方案1】:

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

    This example from the documentation 应该足以让您入门。

    【讨论】:

    • 谢谢!,会检查这个建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多