事件时间的重要性
事件,在大数据中,一般是:点赞、评论、播放视频、浏览商品、汽车充电桩发送的充电事件、农业传感器发送的温度、湿度事件
事件时间,就是事件发生的时间,能够真正 反映 事件的本质,所以,一般开发中,以事件时间作为计算基准
乱序数据
第一步
手机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 机制




