Flink窗口函数

news2024/9/21 17:53:00

1.什么是窗口函数

Flink窗口函数是指对数据流中的数据进行分组和聚合操作的函数。

FlinkSQL支持对一个特定的窗口的聚合。例如有用户想统计在过去的1分钟内有多少用户点击了某个的网页。在这种情况下,我们可以定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。

在Flink中,窗口函数可以分为两种类型:时间窗口和计数窗口。时间窗口是指按照时间对数据流进行分组和聚合操作。计数窗口是指按照数据条数对数据流进行分组和聚合操作。

FlinkSQL支持的窗口聚合主要是两种:window aggregate和over aggregate。他们最核心的区别是over aggregate从语义上保障了对每个输入都有一个输出,因此over agregate常被用于ranking,moving average等场景。

Window aggregate支持两种时间类型做窗口:Event Time和Processing Time。每种类型下,又分别支持三种窗口类型:滚动窗口(TUMBLE),滑动窗口(HOP)和会话窗口(SESSION)。

2.时间类型

BlinkSQL支持两种时间:

  • Event Time:用户提供的事件时间(通常是数据的最原始的创建时间),event time一定是用户提供在表的schema里的数据
  • Processing Time:表示系统对事件进行处理的本地系统时间

具体见上篇文章。Flink时间属性_土豆马铃薯的博客-CSDN博客

3.实时计算中的窗口类型

3.1滚动窗口(Tumble Window)

滚动窗口将每个元素分配到一个指定窗口大小的窗口中,滚动窗口有一个固定的大小,并且不会出现重叠。例如:如果指定了一个5分钟大小的滚动窗口,那么无限流的数据会根据时间划分成[0:00 - 0:05), [0:05, 0:10),[0:10, 0:15)... 等窗口。如下图展示了一个 30秒大小的滚动窗口划分。

函数语法:用在GROUP BY子句中,定义window。
        TUMBLE(time_attr, size_interval)

说明:

1. time_attr:参数必须是流中的一个合法的时间属性字段,即指定了 processing time 或是 event time;
2. size_interval:窗口时间间隔; 

使用案例:

INSERT INTO dts_ds_merchant_target
SELECT 
    SUM(buy_amount) AS totalsale,
    TUMBLE_START(ROWTIME, INTERVAL '10' SECOND) AS tms,
    TUMBLE_END(ROWTIME, INTERVAL '1' SECOND) AS tme
FROM dts_ds_merchant_source
GROUP BY tumble(ROWTIME, INTERVAL '1' SECOND)

3.2滑动窗口(Slide Window)

定义一个跳跃的时间窗口(在 Table API 中称为滑动窗口)。滑动窗口有一个固定的持续时间( 第二个interval 参数 )以及一个滑动的间隔(第一个 interval 参数 )。若滑动间隔小于窗口的持续时间,滑动窗口则会出现重叠;因此,行将会被分配到多个窗口中。比如,一个大小为 15 分组的滑动窗口,其滑动间隔为 5 分钟,将会把每一行数据分配到 3 个 15 分钟的窗口中。滑动窗口可以定义在事件时间(批处理、流处理)或处理时间(流处理)上。

函数语法:用在GROUP BY子句中,定义window。
        HOP(time_attr, slide_interval, size_interval)

说明:

1. time_attr:参数必须是流中的一个合法的时间属性字段,即指定了 processing time 或是 event time;
2. slide_interval:滑动窗口的滑动时间间隔;
3. size_interval:滑动窗口的固定时间间隔; 

使用案例:

INSERT INTO dts_ds_slide_target
SELECT 
    SUM(buy_amount) AS totalsale,
    HOP_START(ROWTIME, INTERVAL '30' SECOND ,INTERVAL '5' MINUTE ) as hops,
    HOP_END(ROWTIME, INTERVAL '30' SECOND ,INTERVAL '5'MINUTE ) as hope
FROM dts_ds_merchant_source
GROUP BY HOP(ROWTIME, INTERVAL '30' SECOND ,INTERVAL '5' MINUTE )

3.3会话窗口(Session Window)

定义一个会话时间窗口。会话时间窗口没有一个固定的持续时间,但是它们的边界会根据 interval 所定义的不活跃时间所确定;即一个会话时间窗口在定义的间隔时间内没有时间出现,该窗口会被关闭。例如时间窗口的间隔时间是 30 分钟,当其不活跃的时间达到30分钟后,若观测到新的记录,则会启动一个新的会话时间窗口(否则该行数据会被添加到当前的窗口),且若在 30 分钟内没有观测到新纪录,这个窗口将会被关闭。会话时间窗口可以使用事件时间(批处理、流处理)或处理时间(流处理)。

 

函数语法:用在GROUP BY子句中,定义window。
        SESSION(time_attr, interval)

说明:

1. time_attr:参数必须是流中的一个合法的时间属性字段,即指定了 processing time 或是 event time;
2. interval:会话窗口的gap时间间隔; 

使用案例:

NSERT INTO dts_ds_session_target
SELECT 
    id as id,
    SUM(buy_amount) AS totalsale,
    SESSION_START(ROWTIME, INTERVAL '10' SECOND ) as sws,
    SESSION_END(ROWTIME, INTERVAL '10' SECOND ) as swe
FROM dts_ds_merchant_source
GROUP BY id,SESSION(ROWTIME, INTERVAL '10' SECOND )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

codemirror 5前端代码编辑器资料整理。

CodeMirror 是基于js的源代码编辑器组件,它支持javascript等多种高级语言,tampermonkey内置的代码编辑器就是基于它。它的按键组合方式兼容vim,emacs等,调用者还可自定义”自动完成“的列表窗口,自由度极高&#xff0c…

Android studio 按钮状态列表

1.创建一个drawable&#xff0c;类型selector 。 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><!--被按下状态 --><item android:state_pressed"…

信息安全复习三:古典密码之设计好的密码算法

一.章节梗概 讨论以下算法&#xff0c;理解怎么设计好的密码算法的关键问题 1.Caesar cipher 2.单字母表密码 3.Playfairmima 4.维吉尼亚密码 5.自动生成密码 二.Caesar cipher 2.1 穷举攻击 穷举攻击定义&#xff1a;尝试所有密钥直到有一个合法密钥能够把密文还原成明文&…

软考软件设计师 操作系统笔记

操作系统地位 程序顺序执行&#xff08;进程管理&#xff09; 程序顺序执行的特征&#xff0c;顺序性封闭性可再现性 前趋图 P1结束后 V操作 SS1 P2操作前先执行S S -1 此时S0 一个箭头对应一个信号量 程序并发执行和前驱图 找到输入i计算c输出p&#xff0c;如果找不到就…

结合实战,浅析GB/T28181(十)——媒体流保活

1 问题现象 在实际项目对接过程中&#xff0c;我们有时会碰到这样的问题&#xff1a;视频正在播放着&#xff0c;突然停止了。然后ping一下&#xff0c;也能ping通&#xff01;下级平台或上级平台看起来也在线&#xff0c;看起来不是网络的问题。这到底咋回事呢&#xff1f;一…

实验室电磁铁EM4S的技术参数

锦正茂科技自主研发的电磁铁&#xff0c;可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 &#xff0c;并且可以通过调整极头间距改变磁场的大小&#xff0c;该种类型的电磁铁能够很好的与客户设计的磁场平台兼容。主要用于磁滞现象研究、磁化系数测量、霍尔效…

公派访问学者签证申请需提交的材料

公派访问学者签证申请需提交的材料: 1、《公派留学人员基本情况表》。 2、留学基金委出具的《同意派出函》复印件一份(特殊项目除外)。 3、录取文件复印件一份。(如您是改派国别、延期派出、缩短在外留学期限等&#xff0c;还要提交留学基金委出具的相关文件复印件一份)。 4…

dtype = torch.float32到底有什么用

dtype torch.float32到底有什么用 解决&#xff1a;RuntimeError: expected scalar type Long but found Float 先看一个例子 要计算 z x0 w1x1 w2x2 其中w [-0.2,0.15,0.15] 于是你开始尝试 其中torch.mv用于矩阵*向量 此时你发现他需要你提供float格式的数据 你查看发…

(一)MYSQL实战——用户权限控制管理

前言 mysql作为目前最流行的关系型数据库&#xff0c;被广泛使用在各种系统服务中&#xff0c;本节内容主要是关于mysql数据库在生产环境中用户、权限等相关内容的设置说明&#xff0c;便于我们更好的使用和管理我们的数据库。 正文 SQL的分类 ①数据查询语言&#xff08;Da…

SpringBoot日志

日志有什么用&#xff1f; 日志最主要的用途就是排查和定位错误&#xff0c;除此之外&#xff0c;日志还可以将错误信息具体化&#xff0c;比如时间、位置等。 如何打印日志 使用Logger类 使用方法&#xff1a; Logger log LoggerFactory.getLogger&#xff08;类名/类名…

MVCC实现原理

MVCC实现原理 主要依赖隐藏字段undo logundolog生成的记录链 Read View可见性规则三个全局属性具体的比较规则 MVCC的整体处理流程RC、RR级别下的InnoDB快照读有什么不同 主要依赖 mvcc的实现原理主要依赖于记录中的三个隐藏字段&#xff08;对用户来说是不可见的&#xff09;…

【Spring Cloud Alibaba】8.路由网关(Gateway)

文章目录 简介什么是 Spring Cloud Gateway功能介绍工作流程 开始搭建创建项目修改POM文件添加启动类添加配置文件启动项目测试 网关全局过滤创建全局过滤器测试 结尾 简介 接下来对服务消费者添加路由网关来实现统一访问接口&#xff0c;本操作先要完成之前的步骤&#xff0c…

API 自动化测试难点总结与分享

笔者是 API 管理工具的项目参与者之一&#xff0c;在日常工作中会经常遇到 API 自动化测试难点&#xff0c;我决定总结分享给大家&#xff1a; API 自动化测试的难点包括&#xff1a; 接口的参数组合较多&#xff0c;需要覆盖各种可能的情况。 接口的状态和数据关联较多&#…

DJ4-1 存储器的层次结构

目录 4.1.1 存储器的层次结构 1. 主存储器&#xff08;内存&#xff0c;主存&#xff0c;可执行存储器&#xff09; 2. 寄存器 3. 高速缓存 4. 磁盘缓存 存储器层次结构的特点 4.1.2 存储器管理的目的和功能 1. 主存储器的分配和管理 2. 提高主存储器的利用率 3. 扩…

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局

近年来&#xff0c;由于社会经济的快速发展和人口增长&#xff0c;社会活动对环境的压力不断增大&#xff0c;人地矛盾加剧。虽然全球各国在生态环境的建设和保护上已取得不少成果&#xff0c;但还是未从根本上转变生态环境的恶化趋势&#xff1b;生态破坏、环境退化、生物多样…

OceanMind海睿思入选“2023爱分析·智能制造最佳实践案例”

近日&#xff0c;中国领先的产业数字化研究与咨询机构 爱分析 发布了《2023爱分析智能制造最佳实践案例》&#xff0c;该奖项旨在肯定智能制造领域领先企业的数字化创新应用和最佳实践。 中新赛克海睿思凭借为星宇股份构建的“星宇车灯数据智能解决方案”入选智能制造最佳实践…

AWR1642毫米波雷达实测行人、自行车和汽车等目标

本文编辑 | 调皮哥的小助理 AWR1642因为最大中频带宽 固定只有5MHz&#xff0c;最大中频带宽是发射信号与回波信号混频之后得到的最大中频频率&#xff0c;即代表着最大的回波延迟时间。 因此根据雷达方程和目标最大探测距离公式&#xff0c;如下所示&#xff1a; 复采样&…

一文谈谈文心一言对比ChatGPT4.0的差距

对于想体验文心一言的朋友&#xff0c;可以进行申请尝试&#xff0c;快速入口 如果想体验ChatGPT的朋友&#xff0c;可以自行fq注册&#xff1b;但是由于现在限制注册并且不稳定&#xff0c;对于不会用梯子不想注册的朋友可以使用这个进行访问&#xff0c;快速入口 关于ChatG…

CTF之SSRF常见绕过

1.绕过localhost和127.0.0.1 当程序中限制了我们使用localhost和127.0.0.1时&#xff0c;便可以利用进制转换来绕过 http://0x7F.0.0.1 //16进制 http://0177.0.0.1 //8进制 http://2130706433 //10进制整数格式 http://0x7F000001 16进制整数格式 http://127.1 //省略模式 h…

【算法】C程序的运行速度测试

C语言程序的运行速度测试 代码随想录上提到了一点&#xff0c;即我们应该学会估计一个时间复杂度较高的算法&#xff0c;在机器上的运行速度。 如果题目给出的数据量级在高复杂度的算法中会超时&#xff0c;那就应该放弃使用这个代码&#xff0c;而想其他时间复杂度更优的解法…