我使用Apache Flink 1.4进行了这样的流设置 从DataStream开始 然后是keyBy 然后是窗口 聚合
聚合操作的输出是AggregateResult对象 所以现在结束的流是SingleOutputStreamOperator类型
接下来我想做的是相当于一个scala foldLeft。是否有提供该功能的运营商。
由于
答案 0 :(得分:1)
Flink 1.4提供与foldLeft
类似的AggregateFunction
。
API of the AggregateFunction的工作原理如下:初始(或开始)值在createAccumulator()
方法中定义。累加器保存部分聚合的值。使用add()
方法将值聚合到累加器中。最后,通过getResult()
方法从累加器计算结果。
与foldLeft
的区别在于AggregateFunction
能够通过其merge()
方法合并其累加器(部分聚合)。某些窗口类型(会话窗口)需要合并部分聚合的能力,并且对某些优化很有用。