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

相关推荐
字节跳动数据平台10 分钟前
火山引擎DataAgent:AI完成从“数据洞察”到“自主行动”质变
大数据
云淡风轻~~1 小时前
从 CSV文件的加载、分区和处理 来理解 Spark RDD
大数据·分布式·spark
阿里云大数据AI技术2 小时前
【ICML2025】大模型训练性能4倍提升!阿里云PAI团队研究成果ChunkFlow中选
大数据·人工智能·机器学习
AutoMQ3 小时前
AutoMQ 与 Lightstreamer 达成战略合作:NASA也在用的 Kafka 数据实时分享新架构
大数据
ApacheSeaTunnel3 小时前
MySQL 数据同步至 S3file,并接入 Hive 访问:SeaTunnel 实践指南
大数据·mysql·开源·数据集成·s3·seatunnel·数据同步
黄雪超3 小时前
Kafka——应该选择哪种Kafka?
大数据·分布式·kafka
项目題供诗3 小时前
Hadoop(二)
大数据·hadoop·分布式
Leo.yuan3 小时前
ETL还是ELT,大数据处理怎么选更靠谱?
大数据·数据库·数据仓库·信息可视化·etl
小阳睡不醒3 小时前
小白成长之路-Elasticsearch 7.0 配置
大数据·elasticsearch·excel
bxlj_jcj3 小时前
Flink Watermark原理与实战
大数据·flink