40、Flink 的窗口延迟数据处理(Allowed Lateness)详解

Allowed Lateness
a)概述

在使用 event-time 窗口时,数据可能会迟到,即 Flink 用来追踪 event-time 进展的 watermark 已经越过了窗口结束的 timestamp 后,数据才到达。

默认,watermark 一旦越过窗口结束的 timestamp,迟到的数据就会被直接丢弃;但是 Flink 允许指定窗口算子最大的 allowed lateness ,Allowed lateness 定义了一个元素可以在迟到多长时间的情况下不被丢弃,这个参数默认是 0,在 watermark 超过窗口末端、到达窗口末端加上 allowed lateness 之前的这段时间内到达的元素,依旧会被加入窗口;取决于窗口的 trigger,一个迟到但没有被丢弃的元素可能会再次触发窗口,比如 EventTimeTrigger

为了实现这个功能,Flink 会将窗口状态保存到 allowed lateness 超时才会将窗口及其状态删除 。

默认,allowed lateness 被设为 0,即 watermark 之后到达的元素会被丢弃。

复制代码
DataStream<T> input = ...;

input
    .keyBy(<key selector>)
    .window(<window assigner>)
    .allowedLateness(<time>)
    .<windowed transformation>(<window function>);

使用 GlobalWindows 时,没有数据会被视作迟到,因为全局窗口的结束 timestamp 是 Long.MAX_VALUE

b)从旁路输出(side output)获取迟到数据

通过 Flink 的 旁路输出 功能,可以获得迟到数据的数据流。

首先,需要在开窗后的 stream 上使用 sideOutputLateData(OutputTag) 表明需要获取迟到数据;然后,就可以从窗口操作的结果中获取旁路输出流了。

复制代码
final OutputTag<T> lateOutputTag = new OutputTag<T>("late-data"){};

DataStream<T> input = ...;

SingleOutputStreamOperator<T> result = input
    .keyBy(<key selector>)
    .window(<window assigner>)
    .allowedLateness(<time>)
    .sideOutputLateData(lateOutputTag)
    .<windowed transformation>(<window function>);

DataStream<T> lateStream = result.getSideOutput(lateOutputTag);
c)注意

当指定了大于 0 的 allowed lateness 时,窗口本身以及其中的内容仍会在 watermark 越过窗口末端后保留。 这时,如果一个迟到但未被丢弃的数据到达,它可能会再次触发这个窗口,这种触发被称作 late firing,与表示第一次触发窗口的 main firing 相区别。

如果是使用会话窗口的情况,late firing 可能会进一步合并已有的窗口,因为他们可能会连接现有的、未被合并的窗口。

late firing 发出的元素应该被视作对之前计算结果的更新,即你的数据流中会包含一个相同计算任务的多个结果,应用需要考虑到这些重复的结果,或去除重复的部分。

相关推荐
Dr.AE5 小时前
AI+教育行业分析报告
大数据·人工智能·教育电商
Evaporator Core6 小时前
通信专业技术资格考试备战系列(一):通信基础知识核心要点解析
大数据·tornado
freepopo6 小时前
比较好的别墅装修策略
大数据
实战产品说11 小时前
2026出海产品的机会与挑战
大数据·人工智能·产品运营·产品经理
2501_9269783311 小时前
从Prompt的“结构-参数”到多AI的“协作-分工”--底层逻辑的同构分化
大数据·人工智能·机器学习
教男朋友学大模型11 小时前
平衡AI自动化与人工干预
大数据·人工智能·自动化
渣瓦攻城狮12 小时前
互联网大厂Java面试实战:核心技术与场景分析
java·大数据·redis·spring·微服务·面试·技术分享
Elastic 中国社区官方博客13 小时前
Elasticsearch:通过最小分数确保语义精度
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
狮子座明仔13 小时前
DeepImageSearch:当图像检索需要“侦探式推理“,现有AI还差多远?
大数据·人工智能·语言模型
追风少年ii13 小时前
CosMx文献分享--空间同型聚类对癌细胞可塑性的抑制
大数据·数据挖掘·数据分析·空间·单细胞