两个概念
处理时间:流处理算子所在机器的本地时间。
事件时间:数据流中事件发生的实际时间,一般是附加在数据流中事件的时间戳。
watermark -- 事件时间窗口的触发时机
实际生产中,事件不可避免会产生延迟,如何判断某一时间点之前的事件都已接收到,从而触发流处理算子工作?Flink提供了水位线机制,水位线就是告诉Flink,某个时间戳之前的事件都已全部到达。当算子接收到时间为T的水位线,算子就会认为不会再接收到时间戳小于或等于T的事件了。
- 水位线如果设置过小,可能会有延迟较久的事件未被处理,从而影响结果的准确性;需要额外代码来处理他们。
- 水位线如果设置过大,虽然准确性得到保证,但是延迟却变高了。