首页/数据/数据工程与 ETL 速查/事件时间与处理时间 Event/Processing Time
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

事件时间与处理时间 Event/Processing Time

事件时间是数据实际发生的时间(常来自记录里的时间戳),处理时间是引擎处理到它的时刻。两者存在乱序与延迟差,流处理以事件时间语义保证结果可复现。

事件时间数据自带的发生时间,从记录中提取
处理时间引擎本地时钟,实现简单但不可复现
摄入时间进入引擎系统的时刻,介于两者之间

Flink SQL 声明事件时间

Flink SQL 声明事件时间
CREATE TABLE orders (
  order_id  STRING,
  amount    DECIMAL(10,2),
  ts        TIMESTAMP(3),
  WATERMARK FOR ts AS ts - INTERVAL '5' SECOND
) WITH ('connector' = 'kafka', ...);
用处理时间做统计时,重跑同一批数据会得到不同结果;对外口径指标优先用事件时间。

易错点

  • 源系统时间戳不统一(本地时间与 UTC 混用)会导致窗口错位,先统一约定
  • 把时间字段建成字符串再转换,格式异常的行会报错或丢数,入库前先做格式校验

数据来源与参考

  • Apache Flink 官方文档:Timely Stream Processing
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌