在哪找专业做淘宝网站,简单网站建设设计,广州网站设计哪个好,windows7建设网站Evictors
Flink 的窗口模型允许在 WindowAssigner 和 Trigger 之外指定可选的 Evictor#xff0c;通过 evictor(...) 方法传入 Evictor。
Evictor 可以在 trigger 触发后、调用窗口函数之前或之后从窗口中删除元素#xff0c; Evictor 接口提供了两个方法实现此功能#x…Evictors
Flink 的窗口模型允许在 WindowAssigner 和 Trigger 之外指定可选的 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(IterableTimestampedValueT 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(IterableTimestampedValueT elements, int size, W window, EvictorContext evictorContext);evictBefore() 包含在调用窗口函数前的逻辑而 evictAfter() 包含在窗口函数调用之后的逻辑在调用窗口函数之前被移除的元素不会被窗口函数计算。
Flink 内置有三个 evictor
CountEvictor: 仅记录用户指定数量的元素一旦窗口中的元素超过这个数量多余的元素会从窗口缓存的开头移除。DeltaEvictor: 接收 DeltaFunction 和 threshold 参数计算最后一个元素与窗口缓存中所有元素的差值并移除差值大于或等于 threshold 的元素。TimeEvictor: 接收 interval 参数以毫秒表示它会找到窗口中元素的最大 timestamp max_ts 并移除比 max_ts - interval 小的所有元素。
默认情况下所有内置的 evictor 逻辑都在调用窗口函数前执行。 指定一个 evictor 可以避免预聚合因为窗口中的所有元素在计算前都必须经过 evictor。 Note: Evictor 在 Python DataStream API 中还不支持. Flink 不对窗口中元素的顺序做任何保证即使 evictor 从窗口缓存的开头移除一个元素这个元素也不一定是最先或者最后到达窗口的。