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,确保慢速流的数据不被快速流覆盖

相关推荐
Costrict19 分钟前
解锁新阵地!CoStrict 现已支持 JetBrains 系列 IDE
大数据·ide·人工智能·深度学习·自然语言处理·ai编程·visual studio
阿里云大数据AI技术1 小时前
云栖实录|阿里云 Milvus:AI 时代的专业级向量数据库
大数据·人工智能·搜索引擎
vivo互联网技术1 小时前
vivo HDFS EC 大规模落地实践
大数据·hdfs
QYResearch2 小时前
2025-2031年我国葡萄糖年产量和市场规模
大数据
QYResearch2 小时前
2025-2031年全球磷矿石市场规模和增长趋势
大数据
Hello.Reader2 小时前
Flink DataStream「全分区窗口处理」mapPartition / sortPartition / aggregate / reduce
大数据·python·flink
soso(找工作版5 小时前
【阿里巴巴大数据之路】事实表设计
大数据
我星期八休息6 小时前
C++智能指针全面解析:原理、使用场景与最佳实践
java·大数据·开发语言·jvm·c++·人工智能·python
wudl55668 小时前
flink sql 所有函数详细用例
大数据·sql·flink
luoganttcc8 小时前
是凯恩斯主义主导 西方的经济决策吗
大数据·人工智能·金融·哲学