在没有窗口的键控流上减少Flink

时间:2019-09-18 08:52:45

标签: apache-flink

我阅读了源代码,将所有结果都递减到下游。


我想通过无窗口键减少流,

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

如果在窗口上缩小,则flink将在水印到达时将元素前移到下游,因此flink如何确定没有窗口的缩小效果。

2 个答案:

答案 0 :(得分:1)

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

  

减少   KeyedStream→DataStream

     

对键控数据流进行“滚动”缩减。合并电流   最后一个减少的值的元素,并发出新的值。

     

窗口缩小   WindowedStream→DataStream

     

将功能化归约功能应用于窗口,并返回   降低价值。

主要区别在于:

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

答案 1 :(得分:1)

使用流处理时,通常不存在计算“完成”的想法。他们只是无限期地前进。只要您保持作业运行状态,非窗口式减少都会不断减少。