39、Flink 的窗口剔除器(Evictors)详解

Evictors

Flink 的窗口模型允许在 WindowAssignerTrigger 之外指定可选的 Evictor,通过 evictor(...) 方法传入 Evictor

Evictor 可以在 trigger 触发后、调用窗口函数之前或之后从窗口中删除元素, Evictor 接口提供了两个方法实现此功能:

复制代码
/**
 * Optionally evicts elements. Called before windowing function.
 *
 * @param elements The elements currently in the pane.
 * @param size The current number of elements in the pane.
 * @param window The {@link Window}
 * @param evictorContext The context for the Evictor
 */
void evictBefore(Iterable<TimestampedValue<T>> elements, int size, W window, EvictorContext evictorContext);

/**
 * Optionally evicts elements. Called after windowing function.
 *
 * @param elements The elements currently in the pane.
 * @param size The current number of elements in the pane.
 * @param window The {@link Window}
 * @param evictorContext The context for the Evictor
 */
void evictAfter(Iterable<TimestampedValue<T>> elements, int size, W window, EvictorContext evictorContext);

evictBefore() 包含在调用窗口函数前的逻辑,而 evictAfter() 包含在窗口函数调用之后的逻辑,在调用窗口函数之前被移除的元素不会被窗口函数计算。

Flink 内置有三个 evictor

  • CountEvictor: 仅记录用户指定数量的元素,一旦窗口中的元素超过这个数量,多余的元素会从窗口缓存的开头移除。
  • DeltaEvictor: 接收 DeltaFunctionthreshold 参数,计算最后一个元素与窗口缓存中所有元素的差值,并移除差值大于或等于 threshold 的元素。
  • TimeEvictor: 接收 interval 参数,以毫秒表示,它会找到窗口中元素的最大 timestamp max_ts 并移除比 max_ts - interval 小的所有元素。

默认情况下,所有内置的 evictor 逻辑都在调用窗口函数前执行。

指定一个 evictor 可以避免预聚合,因为窗口中的所有元素在计算前都必须经过 evictor。
Note: Evictor 在 Python DataStream API 中还不支持.

Flink 不对窗口中元素的顺序做任何保证,即使 evictor 从窗口缓存的开头移除一个元素,这个元素也不一定是最先或者最后到达窗口的。

相关推荐
计算机毕设残哥41 分钟前
紧跟大数据技术趋势:食物口味分析系统Spark SQL+HDFS最新架构实现
大数据·hadoop·python·sql·hdfs·架构·spark
CDA数据分析师干货分享2 小时前
【CDA干货】Excel 的 16类常用函数之计算统计类函数
大数据·数据挖掘·数据分析·excel·cda证书·cda数据分析师
秃头菜狗2 小时前
十、Hadoop 核心目录功能说明表
大数据·hadoop·分布式
秃头菜狗7 小时前
八、安装 Hadoop
大数据·hadoop·分布式
毕设源码-郭学长14 小时前
【开题答辩全过程】以 Python基于大数据的四川旅游景点数据分析与可视化为例,包含答辩的问题和答案
大数据·python·数据分析
顧棟14 小时前
【HDFS实战】HADOOP 机架感知能力-HDFS
大数据·hadoop·hdfs
程序员果子17 小时前
Kafka 深度剖析:架构演进、核心概念与设计精髓
大数据·运维·分布式·中间件·架构·kafka
isfox18 小时前
Hadoop RPC深度解析:分布式通信的核心机制
大数据
猎板PCB黄浩18 小时前
PCB 半固化片:被忽视的成本控制关键,猎板的技术选型与安全适配策略
大数据·网络·人工智能
stjiejieto18 小时前
从工具到生产力:2025 年 “人工智能 +” 的产业落地全景与价值重构
大数据·人工智能·重构