Flink reduce在没有窗口的键控流上



我看了源代码,reduce会把每个结果都写到下游。


我想在没有窗口的情况下按键减少流,

stream.keyBy(key)
.reduce((a, b) -> {
//reduce
return a+b;
});

如果在窗口上减少,Flink 会在水印到达时将 forword 元素到下游,那么 flink 如何确定在没有窗口的情况下减少完成。

根据官方文档 https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/

减少KeyedStream → DataStream

键控数据流上的"滚动"减少。结合电流 元素,并发出新值。

窗口减少窗口流→数据流

将函数化简函数应用于窗口并返回 价值降低。

主要区别在于:

  • 在窗口中完成reduce时,该函数将当前值与窗口值组合在一起。
  • 在 KeyedStream 中完成reduce时,该函数会将当前值与最新值组合在一起。

对于流处理,通常不会有计算"完成"的想法。他们只是无限期地继续下去。只要您让作业保持运行,非窗口化缩减就会继续减少。

相关内容

  • 没有找到相关文章

最新更新