当前位置: 首页 > article >正文

Flink dataStream,如何开窗,如何进行窗口内计算

目录

开窗方式

windowAll()

window()

窗口类型

基于时间

基于数量

开窗后的处理函数

全量聚合函数(也叫窗口函数)

增量聚合函数

增量聚合函数携带一个全量聚合函数


开窗方式

windowAll()

对于没有keyBy的数据流

window()

对于KeyBy后的数据流

窗口类型

基于时间

事件时间语义

滑动

滚动

会话

处理时间语义

滑动

滚动

会话

基于数量

滑动

滚动

开窗后的处理函数

开完窗口后数据的处理方式,首先要对数据进行聚合,聚合的方式分两种,一种全量聚合,一种增量聚合

全量聚合函数(也叫窗口函数)

  • process 记住这一个就够了
  • apply process效果一样,但是没有process全面

每个窗口的所有数据调用一次该函数,在这个函数中有个迭代器,可以获取当前窗口的所有数据

优点:可以获取整个窗口的全量数据,对数据的可处理性更强,比如排序。而且最重要的是他能获取当前的窗口信息

缺点:资源占用率高,效率低

增量聚合函数

  • aggrgate 输入可以与输出类型不一致,api复杂
  • reduce 输入和输出类型必须一致,api简单
    • max\maxBy
    • min\minBy
    • sum

每条记录调用一次该函数,这个函数中总有上一条和当前条两个数据

优点:资源占用率低,效率高

缺点:无法进行复杂逻辑的处理,无法获取窗口信息

增量聚合函数携带一个全量聚合函数

增量聚合的缺点过于明显,但是平时的业务对于全量聚合函数的需求又没这么高,因此Flink提供了一个增量聚合函数携带全量聚合函数的混合使用API,数据处理逻辑还是走增量聚合的逻辑,省资源、效率高,但是一个窗口的数据处理完成后,会调用一次全量聚合函数。又完美了应用了全量聚合函数的特点,可以获取窗口时间。

在这里插入图片描述
其中全量窗口函数有两个WindowFunction 和ProcessWindowFunction,两种功能一致,后者更强大,官方推荐ProcessWindowFunction


http://www.kler.cn/a/18076.html

相关文章:

  • 【Python】爬虫通过验证码
  • 推荐一个超漂亮ui的网页应用设计
  • 高性能分布式缓存Redis-高可用部署
  • 【C++】 list 与 string 基础与实现字符串操作
  • nvm 安装指定node版本时--list 显示为空
  • Java面试要点02 - 自动装箱与拆箱的原理与性能解析
  • BM54-三数之和
  • 盲目自学网络安全只会成为脚本小子?
  • Java入门全网最详细 - 从入门到转行
  • MySQL安装配置教程(保姆级,包含环境变量的配置)适合小白
  • 【Java笔试强训 33】
  • 【python脚本系列】python脚本2——PDF转word文档
  • Rosetta从头蛋白抗体设计、结构优化及在药物研发中的应用
  • Grafana 系列-统一展示-1-开篇
  • 本地使用3台centos7虚拟机搭建K8S集群教程
  • 璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!
  • Chapter4:频率响应法(下)
  • tiechui_lesson01_入口函数和卸载函数
  • MySQL数据库——MySQL存储函数详解
  • Java版本企业电子招投标采购系统源码之项目说明和开发类型源码
  • [面试题] 判断二维空间中一点是否在旋转矩形内部
  • 活动策划进阶指南:细节决定成败
  • 飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
  • JSP网络远程作业处理系统(源代码+论文+开题报告+实习报告)
  • 揭秘镭速传输点对点传输技术,NAT+Raysync强强组合
  • 进程替换函数组介绍exec*