什么是水印(Watermark)?在FlinkSQL中如何定义和使用水印?

提问者:帅平 问题分类:面试刷题
什么是水印(Watermark)?在FlinkSQL中如何定义和使用水印?
1 个回答
孤岛少女情
孤岛少女情
水印(Watermark)是用于衡量事件时间进展的核心机制,主要用于处理乱序事件流,确保基于事件时间的计算(如窗口聚合)能容忍一定程度的延迟数据。在Flink中使用水印示例如下:
-- 与事件时间绑定
CREATE TABLE orders (
  order_id STRING,
  amount DOUBLE,
  event_time TIMESTAMP(3),  -- 事件时间字段
  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND  -- 定义水印策略
) WITH (...);
-- 查询
SELECT 
  TUMBLE_START(event_time, INTERVAL '1' MINUTE) AS window_start,
  SUM(amount) 
FROM orders
GROUP BY TUMBLE(event_time, INTERVAL '1' MINUTE);
发布于:1周前 (05-28) IP属地:
我来回答