Flink窗口函数

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

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秒大小的滚动窗口划分。

Flink窗口函数

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

说明:

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

使用案例:文章来源地址https://www.toymoban.com/news/detail-423988.html

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 分钟的窗口中。滑动窗口可以定义在事件时间(批处理、流处理)或处理时间(流处理)上。

Flink窗口函数

函数语法:用在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 分钟内没有观测到新纪录,这个窗口将会被关闭。会话时间窗口可以使用事件时间(批处理、流处理)或处理时间(流处理)。

Flink窗口函数

函数语法:用在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 )

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

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

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

相关文章

  • 大数据-玩转数据-Flink窗口函数

    前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. ReduceFunction,AggregateFunction更加高效, 原因就是Flink可以对

    2024年02月11日
    浏览(43)
  • Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器

                           星光下的赶路人star的个人主页                        内心的平静始于不再让他人掌控你的感情 在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一

    2024年02月08日
    浏览(46)
  • RESTful 风格是指什么

    RESTful( Representational State Transfer )是一种基于 HTTP 协议的软件架构风格,用于设计网络应用程序的接口。它的设计理念是利用 HTTP 协议中的方法(如 GET、POST、PUT、DELETE 等)来对资源进行 CRUD ,使得客户端和服务器之间的通信变得简单、灵活和可扩展。 下面是 RESTful 风格的

    2024年02月21日
    浏览(43)
  • 云计算的云是指什么?最简单的解释是什么?

    云计算是指通过网络云将巨大的数据库逐渐分解成为几个小程序,再分别进行计算,将得出的计算结果及时反馈给客户,计算的时间是非常短的,但是精确度很高。虽然我们已经知道了什么是云计算,但具体云计算的云是指什么?最简单的解释是什么? 云计算的云是指什么?

    2024年02月12日
    浏览(37)
  • 云计算中的出口数据是指什么?

    谷歌云(Google Cloud)近日宣布了一项重大政策变动,决定免除那些选择终止使用其服务并将数据迁移到其他云服务商或本地环境的客户的出口数据费用(数据导出费用) 。 这一举措由谷歌云平台负责人阿米特·扎维里(Amit Zavery)在其博客中公布,他表示:“如果有谷歌云客

    2024年01月25日
    浏览(90)
  • 【JAVA】我们常常谈到的方法是指什么?

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在之前的文章中我们总是会介绍到类中的各式各样的方法,也许在应用中我们对它已经有了初步的了解,今天我们就来详细的介绍一下“方法” 在中文中方法常常指的是获得某种东西或达到某种目的而采取的手段与行

    2024年02月13日
    浏览(44)
  • 大数据平台安全主要是指什么安全?如何保障?

    大数据时代已经来临,各种数据充斥着我们的生活与工作。随着数据的多样性以及复杂性以及大量性,大数据平台诞生了。但对于大数据平台大家都不是很了解,有人问大数据平台安全主要是指什么安全?如何保障? 大数据平台安全主要是指什么安全? 大数据平台安全主要

    2024年02月11日
    浏览(44)
  • 43.241.18.X微端服务器一般是指的什么意思

    “微端”是微型客户端的简写,微端游戏客户端只有一些基本的功能,客户端会根据玩家所到地图,自动将地图文件,以及一些其它文件下载到玩家本地的客户端文件夹中,这样就形成了玩家一边玩游戏一边下载相关的文件到本地。这一特性就需要放游戏服务端的服务器的上

    2024年02月13日
    浏览(43)
  • 编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。 所谓回文是指顺读和倒读都一样的字符串。如“AMNMA“是回文。

    编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。 所谓回文是指顺读和倒读都一样的字符串。如\\\"AMNMA\\\"是回文。 测试输入:abcba 测试输出:是回文! 这道题要求编写一个函数来判断一个字符串是否是回文,并在主函数中调用该

    2024年02月03日
    浏览(68)
  • 【Flink】Flink窗口触发器

           数据进入到窗口的时候,窗口是否触发后续的计算由窗口触发器决定,每种类型的窗口都有对应的窗口触发机制。WindowAssigner 默认的 Trigger通常可解决大多数的情况。我们通常使用方式如下,调用trigger()方法把我们想执行触发器传递进去:  SingleOutputStreamOperatorProduct

    2024年02月12日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包