5.自定义UDF

本文深入解析Flink中的自定义UDF功能,包括普通UDF与富函数的使用,以及窗口概念如时间窗口、计数窗口的运作机制。探讨了窗口函数如ReduceFunction、AggregateFunction和ProcessWindowFunction的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义UDF和窗口

普通UDF

Flink暴露了所有udf函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction等等。我们可以对这些函数进行自定义,继承这个类,重写其中的方法即可.

富函数

相比于普通的UDF,富函数实际上提供了额外的open方法和close提供给用户做初始化和清理的操作.另外,getRuntimeContext()方法提供了函数的RuntimeContext的一些信息,例如函数执行的并行度,当前子任务的索引,当前子任务的名字。同时还它还包含了访问分区状态的方法。

窗口

窗口(window)就是将无限流切割为有限流的一种方式,它会将流数据分发到有限大小的桶(bucket)中进行分析,flink中有两种窗口,时间窗口和计数窗口.

事件窗口就是按照事件戳划分的窗口包括滑动窗口,滚动窗口和会话窗口

滚动窗口

将数据依据固定的窗口长度对数据进行切分,时间对齐,窗口长度固定,没有重叠.一个event只能在一个窗口之中. timeWindow(Senconds(5))

滑动窗口

包括滑动步长和窗口大小,窗口长度固定,可以有重叠.timeWindow(Senconds(5),senconds(10))

会话窗口

flink独有,由一系列事件组合一个指定时间长度的 timeout 间隙组成,也就是一段时间没有接收到新数据就会生成新的窗口.即一个窗口中相邻的两个事件的时间戳小于timeout.

计数窗口

包括滚动计数和滑动计数,和时间的概率类似,

窗口函数

window function 定义了要对窗口中收集的数据做的计算操作.包括增量函数和全量函数,增量函数是来一条数据就做一个运算ReduceFunction, AggregateFunction,全量就是等一个窗口的数据收集完成统一计算ProcessWindowFunction.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值