flink watermark
1.Flink时间类型
(1) Event Time:事务(数据)自带的时间戳
(2) Ingestion Time: 数据进入Flink的时间
(3) Processing Time: 数据被处理时间(墙上时间)
2.划分窗口带来的问题
在数据是有序的情况下,窗口很容易划分。现实中,由于一些原因,数据的时间不是有序的,那么如何确保时间窗口里的数据全部进入了Flink系统处理,如果确保不了,Flink会一直维护这个窗口的数据状态,造成资源浪费。我们很容易知道,如果时间是有序的,就很容易解决这个问题。是不是可以人为 定一个时间,保证有序性。Flink中watermark由此而来。
3.watermark机制
watermark产生方式
(1) 一定时间间隔或者数据量到达一定程度时,产生一个watermark
(2) 根据event time产生watermater。如一条记录产生一个watermark,时间是event time + 10s,Flink处理watermark指定时间时,默认这个时间窗口内的数据全部到达,认为超出这个范围内的数据出现概率小,不影响准确性,可以直接丢弃;或者改变watermark处理机制