flink 水位、窗口、乱序、延迟与侧输出流

1. 水位 (wartermark)有定时触发和断断续续触发两种生成方式,它跟事件时间和处理时间特性无关。

    无论采用哪种时间特性,这两种生产 watermark 的方式都能用

2. 开窗的目的是聚合,一个数据属于多个窗口,窗口的关闭由窗口结束时间,延迟(allowedLateness)和水位共同决定

    在无延迟的配置下,水位超过窗口结束时间,窗口关闭。在有延迟的情况下,窗口依然不会关闭,

    一直到水位超过窗口结束时间 + 延迟时间,窗口才会关闭。所以延迟指的是延迟关闭窗口

3. 假如当前有 3 个窗口开启 A [5, 25]、B [10, 30]、C [15,35],窗口大小 20,滑动 5,延迟 2

    假设当前 watermark 为 26,则 A 已结束但未关闭

        如果当前数据时间为 5 - 25 之间,则会触发 A 窗口聚合计算

    假如当前 watermark 为 27,则 A 被关闭

       如果当前数据时间为 6 ,因为它不属于任何一个未关闭的窗口,所以可以从侧输出流拿到它。但是如果数据时间

   是 11,它属于 B 窗口,从侧输出流则拿不到它

4. 乱序,乱序跟延迟要区分开。延迟表示窗口延迟关闭,乱序影响水位上涨,可以理解为波浪,在有波浪的时候

水能达到的高度跟实际水位有差别,计算水位时,我们应该减去浪高,才是真实的水位。

 

posted on 2022-07-05 17:42  一直小飞猫  阅读(314)  评论(0编辑  收藏  举报

导航