我阅读了源代码,将所有结果都递减到下游。
我想通过无窗口键减少流,
stream.keyBy(key)
.reduce((a, b) -> {
//reduce
return a+b;
});
如果在窗口上缩小,则flink将在水印到达时将元素前移到下游,因此flink如何确定没有窗口的缩小效果。
答案 0 :(得分:1)
根据官方文档https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/
减少 KeyedStream→DataStream
对键控数据流进行“滚动”缩减。合并电流 最后一个减少的值的元素,并发出新的值。
窗口缩小 WindowedStream→DataStream
将功能化归约功能应用于窗口,并返回 降低价值。
主要区别在于:
reduce
时,该函数将当前值与窗口一合并。reduce
时,该函数将当前值与最新值组合在一起。答案 1 :(得分:1)
使用流处理时,通常不存在计算“完成”的想法。他们只是无限期地前进。只要您保持作业运行状态,非窗口式减少都会不断减少。