flink1.12.x Event Time事件时间的重要性、乱序数据、迟到数据、WaterMark

事件时间的重要性

事件,在大数据中,一般是:点赞、评论、播放视频、浏览商品、汽车充电桩发送的充电事件、农业传感器发送的温度、湿度事件

事件时间,就是事件发生的时间,能够真正 反映 事件的本质,所以,一般开发中,以事件时间作为计算基准

乱序数据

第一步

  • 手机A,10:00:00 触发 事件1(如:点赞、评论、播放视频、浏览商品、下单),生成数据,但由于手机卡顿、网络不通、网络延迟,没有及时发送给服务器。10:00:10 才发送给服务器

  • 手机B,10:00:05 触发 事件2(如:点赞、评论、播放视频、浏览商品、下单),生成数据,并 直接发送给服务器

第二步

在kafka中,事件2数据 在前,事件1数据 在后,即:数据发生乱序

第三步

flink 从 kafka 中 摄入 事件2数据,此刻是 事件2数据 的 摄入时间

注意:由于 数据发生乱序,所以先处理的是 事件2数据 (后生成的)

第四步

flink 处理 事件2数据,此时是 事件2数据 的 处理时间

注意:由于 数据发生乱序,所以先处理的是 事件2数据 (后生成的)

乱序数据带来的问题

在开发中,想基于 事件时间 处理数据,但由于网络不稳定、分布式等原因,会导致乱序数据的产生,乱序数据会让窗口计算不准确

迟到数据

手机A,在 23:59:30 触发 事件1(如:点赞、评论、播放视频、浏览商品、下单),生成数据

但由于手机卡顿、网络不通、网络延迟,没有及时发送给服务器,第二天 00:00:10 才发送给服务器,那么 按天统计数据,由于数据迟到,没有统计上,导致统计不准确

注意:

  • 如果当前是本月最后一天,那么第二天就 跨月,那么按月统计数据,由于数据迟到,导致统计不准确
  • 如果当前是本年最后一天,那么第二天就 跨年,那么 按天、按月、按年 统计数据,由于数据迟到,导致统计不准确

解决

为了解决乱序数据、迟到数据,提出 WaterMark 机制


原文出处:/show_1IX46mjgbSe9.html