好看的水印素材(适合做水印的英文)

35小吃技术网 推荐阅读 2022年10月06日18时33分27秒 235 0

数据乱序的产生

当flink流式传输数据时,在大多数情况下,流向操作符的数据是按照事件的时间顺序来的。但不排除网络抖动、反压等原因导致失序。所谓无序,是指Flink接收到的事件顺序不严格按照事件的事件时间顺序。

下面的场景:

好看的水印素材(适合做水印的英文)-第1张图片

使用时间窗口统计10分钟内的用户流量。

时间窗口:2017年3月19日10:00:00-2017年3月19日10: 10: 00

数据59由于网络延迟,事件时间为2017年3月19日10: 09: 00,处理时间为2017年3月19日10: 10: 02。

此时,根据eventTime,如果2017年3月19日10: 10: 01又有一条数据(事件时间为2017年3月19日10: 10: 00)进入此窗口,则该窗口将被关闭。因为59在2017年3月19日10: 10: 02才到达,因为属于59的窗口提前关闭,所以会遗漏59,导致数据统计不准确。

事件窗口:根据传入数据的事件时间判断是否关闭窗口。如果一个新进来的数据是下一个窗口的数据,前一个窗口将被关闭。

使用水印解决乱序问题

1.水印是一个时间戳。

2.Flink可以给数据流添加水印,可以理解为:接收到一条消息后,在消息中增加一个额外的时间字段,即添加水印。一般人工添加消息的水印会晚于当前消息的事件时间。

3.根据水印时间判断窗口是否关闭,但不会修改原来的事件时间,窗口边界仍由事件时间决定。

(1)水印不会影响原始的Eventtime。

好看的水印素材(适合做水印的英文)-第2张图片

(2)数据流加水印时,会根据水印时间触发窗口计算。

(3)一般会设置水印时间,比Eventtime晚(一般几秒)

(4)当接收到的水印时间