Flink 窗口(1)—— 基础概念

这篇具有很好参考价值的文章主要介绍了Flink 窗口(1)—— 基础概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

窗口:将无限数据切割成有限的“数据块”进行处理,以便更高效地处理无界流

在处理无界数据流时,把无界流进行切分,每一段数据分别进行聚合,结果只输出一次。这就相当于将无界流的聚合转化为了有界数据集的聚合

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

Flink “存储桶”

在 Flink 中,窗口可以把流切割成有限大小的多个“存储桶”(bucket);每个数据都会分发到对应的桶中,当到达窗口结束时间时,就对每个桶中收集的数据进行计算处理

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

窗口处理过程:

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

窗口创建:

Flink 中窗口并不是静态准备好的,而是动态创建——当有落在这个窗口区间范围的数据达到时,才创建对应的窗口

窗口分类

按照驱动类型分类

驱动类型,即窗口以什么标准来开始和结束数据的截取


按照时间段截取:时间窗口

窗口大小:用结束时间减去开始时间,得到这段时间的长度,就是窗口的大小

Flink中用TimeWindow类来表示时间窗口:

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

可以看到,窗口的时间范围是左闭右开的区间


按照固定的个数截取:计数窗口

计数窗口基于元素的个数来截取数据,到达固定的个数时就触发计算并关闭窗口

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

按照窗口分配数据的规则分类

滚动窗口

滚动窗口有固定的大小,是一种对数据进行“均匀切片”的划分方式;

窗口之间没有重叠,也不会有间隔,是“首尾相接”的状态,所以每个数据都会被分配到一个窗口,而且只会属于一个窗口

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

滚动窗口可以基于时间定义,也可以基于数据个数定义;需要的参数只有一个,就是窗口的大小(window size)。比如我们可以定义一个长度为 1 小时的滚动时间窗口,那么每个小时就会进行一次统计;或者定义一个长度为 10 的滚动计数窗口,就会每 10 个数进行一次统计

滑动窗口

滑动窗口的大小也是固定的,但窗口之间并不是首尾相接的,而是可以“错开”一定的位置

参数:窗口大小和滑动步长

窗口大小是固定的,代表了两个窗口结束时间的间隔

滑动步长代表了窗口计算的频率。滑动的距离代表了下个窗口开始的时间间隔

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

当滑动步长小于窗口大小时,滑动窗口就会出现重叠,这时数据也可能会被同时分配到多个窗口中;具体的个数,就由窗口大小和滑动步长的比值来决定;

比如我们定义的窗口长度为 1 小时、滑动步长为 30 分钟,那么对于 8 点 55 分的数据,应该同时属于[8 点, 9 点)和[8 点半, 9 点半)两个窗口;而对于 8 点 10 分的数据,则同时属于[8点, 9 点)和[7 点半, 8 点半)两个窗口

会话窗口

  • 数据来了之后就开启一个会话窗口,如果接下来还有数据陆续到来,那么就一直保持会话;如果一段时间一直没收到数据,那就认为会话超时失效,窗口自动关闭
  • 会话窗口只能基于时间来定义;因为“会话”终止的标志就是“隔一段时间没有数据来”
  • 参数:会话的超时时间
  • 会出现的问题:相邻两个数据的时间间隔 gap大于指定的 size,我们认为它们属于两个会话窗口,前一个窗口就关闭;可在数据乱序的情况下,可能会有迟到数据,它的时间戳刚好是在之前的两个数据之间的。这样一来,之前我们判断的间隔中就不是“一直没有数据”,而缩小后的间隔有可能会比 size 还要小——这代表三个数据本来应该属于同一个会话窗口
  • 解决方法:每来一个新的数据,都会创建一个新的会话窗口;然后判断已有窗口之间的距离,如果小于给定的 size,就对它们进行合并(merge)操作

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

全局窗口

  • 全局有效,会把相同 key 的所有数据都分配到同一个窗口中(就相当于没有分窗口)
  • 默认是不会做触发计算的。如果希望它能对数据进行计算处理,还需要自定义“触发器”(Trigger)

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

Flink 中的计数窗口(Count Window),底层就是用全局窗口实现的

窗口的生命周期

①窗口的创建:窗口的类型和基本信息由窗口分配器指定,但是窗口的创建是由数据驱动创建的,当第一个应该属于这个窗口的数据元素到达时,就会创建对应的窗口

②窗口计算的触发:触发器触发窗口函数的执行,进行数据计算

③窗口的销毁:一般情况下,当时间达到了结束点,就会直接触发计算输出结果、进而清除状态销毁窗口;在特殊的场景下,窗口的销毁和触发计算会有所不同

事件时间语义下,如果设置了允许延迟,那么在水位线到达窗口结束时间时,仍然不会销毁窗口;窗口真正被完全删除的时间点,是窗口的结束时间加上用户指定的允许延迟时间

④窗口API:

Flink 窗口(1)—— 基础概念,Flink,大数据,大数据,flink,分布式,数据分析,学习,笔记

学习课程链接:【尚硅谷】Flink1.13实战教程(涵盖所有flink-Java知识点)_哔哩哔哩_bilibili 文章来源地址https://www.toymoban.com/news/detail-762466.html

到了这里,关于Flink 窗口(1)—— 基础概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS7安装Flink1.17伪分布式

    拥有1台CentOS7 CentOS7安装好jdk,官方文档要求java 11,使用java 8也可以。可参考 CentOS7安装jdk8 下载安装包 ​ 创建软链接 添加如下环境变量 让环境变量立即生效 进入flink配置目录,查看flink的配置文件 配置flink-conf.yaml 找到如下配置项,并按照如下修改,其中node1为机器主机名

    2024年04月14日
    浏览(35)
  • 如何使用Spark/Flink等分布式计算引擎做网络入侵检测

    ⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿 个人网站:https://jerry-jy.co/ 本篇博客是我在做 基于Spark/Flink大数据环境下网络入

    2024年02月11日
    浏览(51)
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(8) - 完整版

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月04日
    浏览(44)
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(5) - kafka

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月03日
    浏览(70)
  • 分布式基础概念

    微服务架构风格,就是把一个单体架构按照业务拆分成多个服务模块,每个模块之间独立部署运行、互不影响,并使用轻量级机制通信,通常是 HTTP API。 集群是个物理形态,分布式是个工作方式。 只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知

    2024年02月07日
    浏览(41)
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(2) - jdbc/mysql

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月03日
    浏览(50)
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(1) - File、Socket、console

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月01日
    浏览(46)
  • DAY-01--分布式&微服务基础概念

    了解整体项目包含后端、前端、周边维护。整个项目的框架知识。   1、微服务         将应用程序 基于业务 拆分为 多个小服务,各小服务单独部署运行,采用http通信。 2、集群分布式节点         集群是个物理形态,分布式是工作方式。         集群:将几台

    2024年02月09日
    浏览(44)
  • pytorch 分布式 Node/Worker/Rank等基础概念

    分布式训练相关基本参数的概念如下: Definitions Node  - A physical instance or a container; maps to the unit that the job manager works with. Worker  - A worker in the context of distributed training. WorkerGroup  - The set of workers that execute the same function (e.g. trainers). LocalWorkerGroup  - A subset of the workers in the worker g

    2024年02月02日
    浏览(47)
  • Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

    说明: 本篇将详细介绍用二进制安装包部署hadoop等组件,注意事项,各组件的使用,常用的一些命令,以及在部署中遇到的问题解决思路等等,都将详细介绍。 ip hostname 192.168.1.11 node1 192.168.1.12 node2 192.168.1.13 node3 1.2.1系统版本 1.2.2内存建议最少4g、2cpu、50G以上的磁盘容量 本次

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包