我有一个这样的流设置,使用 Apache Flink 1.4 从 DataStream 然后 keyBy 然后 window 然后聚合
聚合操作的输出是一个 AggregateResult 对象,因此它现在结束的流是 SingleOutputStreamOperator 类型
我接下来想做的是相当于一个 scala foldLeft。是否有提供该功能的运营商。
谢谢
我有一个这样的流设置,使用 Apache Flink 1.4 从 DataStream 然后 keyBy 然后 window 然后聚合
聚合操作的输出是一个 AggregateResult 对象,因此它现在结束的流是 SingleOutputStreamOperator 类型
我接下来想做的是相当于一个 scala foldLeft。是否有提供该功能的运营商。
谢谢
Flink 1.4 提供了AggregateFunction
类似于foldLeft
.
AggregateFunction的API工作如下: 初始(或起始)值在createAccumulator()
方法中定义。累加器保存部分汇总的值。使用该方法将值聚合到累加器中add()
。最后,通过该getResult()
方法从累加器计算结果。
与 a 的不同之处foldLeft
在于,anAggregateFunction
能够通过其merge()
方法合并其累加器(部分聚合)。某些窗口类型(会话窗口)需要合并部分聚合的能力,并且对于某些优化很有用。