watermark的作用

事件时间的推进

上游发过来的数据总是乱序的,有早有晚,然而有些动作是必须要明确的标记触发的,比如窗口计算。

那么,此时就需要一个水位线来推进事件时间

比如,系统最大时间-时间间隔

java 复制代码
stream.assignTimestampsAndWatermarks(
  WatermarkStrategy
    .<Event>forBoundedOutOfOrderness(Duration.ofSeconds(10))
    .withTimestampAssigner((event, ts) -> event.getEventTime())
);

表示系统允许最大乱序为 10 秒。

  • Flink 在内部生成 Watermark 的公式为:Watermark = 当前观察到的最大事件时间 - 10 秒

  • 只要比这个 Watermark 更早的事件,就被认为是"已经延迟太久"的数据,可能被丢弃或作为迟到数据处理。

多流操作的协同​

​​双流 Join 的完整性保证​​:在双流 join或 coProcessFunction中,Watermark 用于对齐两个流的事件时间。例如:

  • 流 A 的 Watermark = 10:05
  • 流 B 的 Watermark = 10:00

下游算子以 min(10:05, 10:00) = 10:00作为当前 Watermark,确保仅当两流数据均推进到 10:00后才输出匹配结果,避免数据丢失 。

​​乱序数据处理​​:通过取各输入流的最小 Watermark,确保慢速流的数据不被快速流覆盖

相关推荐
TDengine (老段)17 分钟前
从细胞工厂到智能制造:Extracellular 用 TDengine 打通数据生命线
java·大数据·数据库·科技·制造·时序数据库·tdengine
PONY LEE1 小时前
Flink 任务调优案例分析
大数据·flink
Hello.Reader1 小时前
Flink DataStream V2 的 Watermark可编排的“流内控制事件”实战
大数据·flink
驾数者1 小时前
Flink SQL核心概念解析:Table API与流表二元性
大数据·sql·flink
TTBIGDATA9 小时前
【Ambari开启Kerberos】KERBEROS SERVICE CHECK 报错
大数据·运维·hadoop·ambari·cdh·bigtop·ttbigdata
开利网络9 小时前
合规底线:健康产品营销的红线与避坑指南
大数据·前端·人工智能·云计算·1024程序员节
非著名架构师10 小时前
量化“天气风险”:金融与保险机构如何利用气候大数据实现精准定价与投资决策
大数据·人工智能·新能源风光提高精度·疾风气象大模型4.0
Hello.Reader10 小时前
用 CdcUp CLI 一键搭好 Flink CDC 演练环境
大数据·flink
熙梦数字化11 小时前
2025汽车零部件行业数字化转型落地方案
大数据·人工智能·汽车
Hello.Reader11 小时前
Flink CDC「Data Pipeline」定义与参数速查
大数据·flink