千家信息网

Flink1.10中Window窗口机制简介

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章为大家展示了Flink1.10中Window窗口机制简介,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Window概念上面是Flink1.10的官
千家信息网最后更新 2025年12月02日Flink1.10中Window窗口机制简介

本篇文章为大家展示了Flink1.10中Window窗口机制简介,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、Window概念


上面是Flink1.10的官方文档的一句话,翻译了一下大体意思是:Window是处理无限数据流的核心,Windows将流分割为有限大小的"buckets",我们可以在上面应用计算。

Flink认为批处理是流处理的一种非常特殊的情况。在流处理中,我们为数据定义滑动窗口或滚动窗口,并且在每次窗口滑动或滚动时生成结果。批处理则不同,我们定义一个全局窗口,所有的记录都属于同一个窗口;Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。

二、Window分类


1.keyed streams和non-keyed streams

Flink程序在窗口计算之前,先对数据做分流,有两种控制流的方式:第一种是keyed streams;第二种non-keyed streams;

由上图可知,对于keyed streams调用的是keyBy和window,先对数据流根据key进行了分组,经过keyBy的数据流将形成多组数据,下游的算子的多个实例可以并行计算,而non-keyed streams调用的是windowAll,不会对数据流进行分组,所有的数据将发送到下游的单个实例进行处理。两种控制流的原理基本类似,唯一的区别就是发送给下游的多个或单个算子进行计算。

2.Window Assinger

数据经过控制流的处理之后,两种控制流都需要指定一个window Assinger,负责将每个传入的元素分配给一个或多个窗口,有了window Assinger,才会创建出各种形式的window来覆盖我们所需的各种场景,对我们开发来说不需要关注window本身,只需要关注Window Assinger的分类即可,所以很多关于Flink的视频都没有讲解控制流的概念,只讲了Window的分类。

3.Window Assinger分类

Flink为最常见的用例(即滚动窗口、滑动窗口、会话窗口和全局窗口)提供了预定义的Window Assinger程序。您还可以通过扩展Window Assigner类来实现自定义窗口assigner。所有内置的窗口分配程序(全局窗口除外)都根据时间将元素分配给窗口,时间可以是处理时间,也可以是事件时间。

Window 可以是基于时间驱动的(Time Window,例如:每60秒钟),也可以是基于数据驱动的(Count Window,例如:每200个元素)。同时基于不同事件驱动的窗口又可以分成以下几类:滚动窗口 (Tumbling Window, 无重叠)、滑动窗口 (Sliding Window, 有重叠)、会话窗口 (Session Window, 活动间隙)、全局窗口。下面我就结合ApacheFlink官网文档给大家讲解下这四种窗口。

3.1 Tumbling Window(滚动窗口)

滚动窗口将每个元素分配给指定窗口大小的窗口。滚动窗口有一个固定的大小且元素不重叠。例如,如果您指定了一个大小为5分钟的滚动窗口,那么将计算当前窗口并每5分钟启动一个新窗口,如下图所示。

3.2 Sliding Windows(滑动窗口)

滑动窗口分配程序将元素分配给固定长度的窗口。类似于滚动窗口分配程序,窗口的大小由窗口大小参数配置。一个附加的窗口滑动参数控制滑动窗口启动的频率。因此,如果滑动窗口比窗口大小要小,则滑动窗口可以重叠。在这种情况下,元素被分配给多个窗口。例如,您可以有10分钟大小的窗口,它可以滑动5分钟。这样,您每5分钟就会得到一个包含最近10分钟内到达的事件的窗口,如下图所示。

3.3 Session Windows(会话窗口)

会话窗口分配程序根据活动的会话对元素进行分组。与滚动窗口和滑动窗口相比,会话窗口没有重叠,也没有固定的开始和结束时间。相反,当某个会话窗口在一段时间内没有接收到元素时,它就会关闭。当一个不活跃的间隙出现时。会话窗口分配程序可以配置为静态会话间隔,也可以配置为会话间隔提取器函数,该函数定义了不活动期间的长度。当此期间过期时,当前会话将关闭,随后的元素将分配给新会话窗口,如下图所示:

3.4 Global Windows(全局窗口)

全局窗口分配程序将具有相同键的所有元素分配给同一个全局窗口。此窗口模式仅在您还指定自定义触发器时才有用。否则,将不执行任何计算,因为全局窗口没有一个可以处理聚合元素的自然末端,所有相同keyed的元素分配到一个窗口里,这种窗口很少使用,如下图所示:

至此,Flink的Window机制的一些概念介绍完毕。

上述内容就是Flink1.10中Window窗口机制简介,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

分配 元素 数据 全局 大小 程序 处理 时间 控制 多个 数据流 分类 机制 事件 概念 分组 活动 配置 驱动 简介 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发基础设施 中葡金融服务互联网科技集团 数据库技术基础是SQL吗 芜湖电商软件开发要多少钱 服务器raid卡类型 数据库和离散数学的选修课程 国家网络安全宣传周主题新闻稿 鹿泉区技术软件开发服务咨询报价 外国资源数据库有哪些 两个系统共用一个数据库账户 手机工程软件开发 深圳华宇互联网科技贵阳分公司 健康软件开发应用岗位描述 网络安全法什么的能力 高校软件开发大赛 数据库计算总工资 车载网络技术要求有哪些 游戏设计和软件开发哪个好 网络安全风险预防原则概念 人间地狱哪个服务器好玩 滨湖区互联网智能科技产品是什么 用饭店的无线网络安全吗 aix 服务器进程状态查看 互联网科技与教学设计 数据库密码加密方式有几种 互联网科技时代新浪 网络安全教育网络欺凌 想做软件开发 要学什么 数据库合作协议 和平精英平板是一个服务器吗
0