前言
水位线对于初学者来说可能不是很好理解,网上很多资料讲解的也不是很清楚,这篇博客尽量用最通俗易懂、最简单的案例把它讲解清楚。理解水位线之前,我们先得理解Flink中的时间语义。
时间语义
Flink的时间语义主要涉及三种时间概念:事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time,有时也被简称为“摄发时间”或者直接归类到事件时间中)。下面我通过一个简单的例子来解释这些时间概念。
假设我们正在开发一个系统,用来分析用户在网站上的行为,比如用户的点击流数据。这个系统需要根据用户的点击活动进行实时分析,比如统计每分钟内有多少次点击。
-
事件时间(Event Time)
事件时间是指事件实际发生的时间。例如,用户在网站上的一次点击操作发生的时间。在这个场景中,每次点击都会产生一条记录,这条记录包含了点击发生的具体时间戳。案例说明:
- 用户A在上午10点整点击了网站上的某个链接。
- 用户B在上午10点30秒点击了同一个链接。
这两条点击记录会在它们各自发生的时候被打上时间戳:10:00:00 和 10:00:30。
-
处理时间(Processing Time)
处理时间是指系统处理事件的时间,即事件数据到达处理系统的时间。由于网络延迟等原因,系统接收到这些事件的时间可能会晚于事件的实际发生时间。
案例说明: