GlobalWindow和Evictor的常用组合使用

2023-11-25 16:30

本文主要是介绍GlobalWindow和Evictor的常用组合使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

在平时的flink开发中,一旦我们使用到GlobalWindow,那么肯定也就意味着会搭配Evictor以及Tigger一起使用,只有这样才能触发窗口处理函数并且窗口内的元素数量限定在特定的范围内

GlobalWindow和Evictor常见组合用法

先看一下具体的搭配的例子:

public class GlobalWindowJob {public static void main(String[] args) throws Exception {StreamExecutionEnvironment see = StreamExecutionEnvironment.getExecutionEnvironment();see.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime);// see.getCheckpointConfig().enableUnalignedCheckpoints();DataStream<WikipediaEditEvent> edits = see.addSource(new RandomStringSource());KeyedStream<WikipediaEditEvent, String> keyedEdits = edits.keyBy(new KeySelector<WikipediaEditEvent, String>() {@Overridepublic String getKey(WikipediaEditEvent event) {return event.getUser();}});DataStream<String> result =keyedEdits.window(GlobalWindows.create()).trigger(CountTrigger.of(20)).evictor(CountEvictor.of(10)).process(new ProcessWindowFunction<WikipediaEditEvent, String, String, GlobalWindow>() {@Overridepublic void process(String s, Context context, Iterable<WikipediaEditEvent> elements,Collector<String> out) throws Exception {WikipediaEditEvent start = Iterables.getFirst(elements, null);WikipediaEditEvent end = Iterables.getLast(elements, null);int size = Iterables.size(elements);out.collect("key: " + s + " start: " + start.getTimestamp() + " end: "+ end.getTimestamp() + " size:" + size);}});result.print();see.execute();}
}

如上代码所示,我们分别使用到了GlobalWindow,Trigger,Evictor以及处理函数processFunction,下面我们大概看一下这几个在组件在flink开发中的作用.

1.GlobalWindow 特殊的全局Window分配器,此外还有基于时间属性的TimeWindow,它决定了元素应该要分配到哪个窗口中,此外,每个Window分配器默认都有一个对应的Trigger,GlobalWindow对应的默认Trigger是NoTrigger触发器,而TimeWindow对应的默认触发器Trigger是到点触发,如果代码中显示指定了窗口Trigger,那么窗口分配器的默认Trigger将会被覆盖

2.触发器Trigger,这个是决定了什么时候对窗口的元素进行计算或者清除窗口内容,返回值continue表示什么都不做,也就是不会触发窗口计算,也不会触发窗口内容清理,返回值fire表示触发窗口计算,当然触发窗口计算前后需要先经过Evictor过滤,返回值purge表示清除窗口包括窗口元素和所有的状态,窗口会一直占用flink的资源直到返回purge值.

3.淘汰器Evictor,当Trigger触发器返回fire后,在把集合元素交由processFunction处理之前或者之后,集合的元素会被交由Evictor进行过滤操作,此时Evictor可以决定窗口中哪些元素要被移除,哪些会被保留下来交由后面的处理函数来处理,如果不指定Evictor,窗口的所有元素都会提交到ProcessFunction中进行处理

4.ProcessFunction窗口处理函数处理收到的窗口元素(这些元素有可能已经经过了Evictor的过滤操作),进行计算并发送结果到下游算子,ReduceFuction,AggregateFunction都是常用的窗口处理函数

参考文献: https://blog.csdn.net/qq_37555071/article/details/122529271

这篇关于GlobalWindow和Evictor的常用组合使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/424127

相关文章

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4