欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

大白话flink watermark 水位线 最大乱序时间

程序员文章站 2022-03-07 21:50:37
flink watermark水位线是什么?最大乱序时间是什么?初次接触者往往比较蒙,可能有人理解是这样:如果最大乱序时间设为10s,是不是指本应该触发窗口计算的时间点延后10s计算,以便等待更多的数据,这样不就达到处理迟到的数据的目的了么事实是这样么?我们先来说说在已事件时间作为窗口时间的计算触发规则:没什么为什么,就是这么定义的:1.窗口内有数据,2.水位线时间>=窗口的结束时间我们先假定窗口内肯定有数据,那水位线时间怎么样能>=窗口时间呢?大白话解释一下:水位线其实就是一个...

flink watermark水位线是什么?最大乱序时间是什么?初次接触者往往比较蒙,
可能有人理解是这样:如果最大乱序时间设为10s,是不是指本应该触发窗口计算的时间点延后10s计算,以便等待更多的数据,这样不就达到处理迟到的数据的目的了么
事实是这样么?
我们先来说说在以事件时间作为窗口时间的计算触发规则:
没什么为什么,就是这么定义的:
1.窗口内有数据,2.水位线时间>=窗口的结束时间
我们先假定窗口内肯定有数据,那水位线时间怎么样能>=窗口时间呢?
大白话解释一下:
水位线其实就是一个时间戳,用来和窗口时间做比较
流数据中每来一条数据,我们设定水位线生成计算公式:(新来数据里的时间戳-最大乱序时间)
结果有两个:
1:结果>上一次计算水位线时间,则本次水位线时间就是这条数据的时间戳,就是水位往上抬了,离窗口结束的时间点就进了一步
2:结果<=上一次计算的水位线时间,则本次水位线时间还是上次的时间,水位线不变,离窗口结束的时间点没有进步

有没有看出什么端倪?
我们近似可以这么理解:最大乱序时间与水位线的抬升速度是负相关的:
最大乱序时间越大:公式:(新来数据里的时间戳-最大乱序时间)的结果就越小,水位提升的速度就越慢,那水位线时间就越不容易越过窗口结束时间触发窗口计算,窗口内缓存的数据就越多,就容纳越多的迟到数据
最大乱序时间越小:公式:(新来数据里的时间戳-最大乱序时间)的结果就越大,水位提升的速度就越快,那水位线时间就很容易越过窗口结束时间从而触发窗口计算,这个时候再有迟到数据就被丢弃掉了(当然可以自定义处理)
由此可见:最大乱序时间是为生成水位线时间设定的一个中间变量,而不是上面理解的本来要触发的时间点延后多少秒,
实际上flink初学者,经常会碰到一个问题,以事件时间作为窗口时间,明明数据在源源不断流入,可在窗口内却迟迟不见数据输出,这就很可能是因为你的最大乱序时间设定很大,或者流中时间戳有问题,导致水位线迟迟不能提升越过窗口结束时间,不触发窗口计算

本文地址:https://blog.csdn.net/weixin_42094092/article/details/107499797

相关标签: flink