我阅读了源代码,reduce会将每个结果转发到下游。
我想在没有窗口的情况下通过按键减少流,
stream.keyBy(key)
.reduce((a, b) -> {
//reduce
return a+b;
});
Run Code Online (Sandbox Code Playgroud)
如果在窗口上进行reduce,当watermark到达时,flink会将元素转发给下游,那么flink如何在没有窗口的情况下确定reduce完成。
根据官方文档https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/
\n\n\n\n\n减少\n KeyedStream \xe2\x86\x92 DataStream
\n\n对键控数据流进行“滚动”缩减。将当前\n 元素与最后减少的值组合并发出新值。
\n\n窗口缩小\n WindowedStream \xe2\x86\x92 DataStream
\n\n将函数式归约函数应用于窗口并返回归约后的值。
\n
主要区别在于:
\n\nreduce在窗口中完成时,该函数将当前值与窗口值相结合。reduce在 KeyedStream 中完成时,该函数会将当前值与最新值组合起来。| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |