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

Flink中的处理函数

        之前所介绍的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的,所以就可以统称为DataStream API。

        但是在Flink的更底层,我们可以不定义任何具体的算子(比如map,fliter,或者window),而只是提炼出一个统一的“处理”(process)操作,它是所有转换算子中的一个概括性的表达,开发者可以自定义处理逻辑,所以这一层的接口就叫做“处理函数”。Flink中各层之间的关系图如下(最底层就是处理函数):

一、处理函数的功能和使用

        我们之前学习的转换算子,一般只是针对于某种具体操作来定义的,能够拿到的信息比较有限。如果我们想要访问事件的时间戳,或者当前的水位信息,这些在转换算子中都是做不到的。跟时间相关的操作,目前我们只会用窗口来处理,而在很多应用需求中,要求我们对时间有更精细的控制,需要获取水位线,甚至要“把控时间”、定义什么时候做什么事,这就不是基本的时间窗口能实现的了。

        这时就需要使用底层的处理函数,处理函数提供了一个“定时服务”,我们可以通过它访问流中的事件(event)、时间戳(timestamp)、水位线(watermark),甚至可以注册“定时事件”。而且处理函数继承了AbstractRichFunction抽象类,所以拥有富函数类的所有特性,同样可以访问状态(state)和其他运行时信息。此外,处理函数还可以直接将数据输出到侧输出流(side output)中。所以,处理函数是最为灵活的处理方法,可以实现这种自定义的业务逻辑。

二、处理函数的分类

Flink提供了8个不同的处理函数:
(1)、ProcessFunction

这是最基本的处理函数,基于DataStream直接调用.process()时作为参数传入。

(2)、KeyedProcessFunction

这是对流按key分区后的处理函数,基于KeyedStream调用.process()时作为参数传入。

(3)、ProcessWindowFunction

这是开窗之后的处理函数,也是全窗口函数的代表。基于WindowedStream调用.process()时作为参数传入。

(4)、ProcessAllWindowFunction

这也是开窗之后的处理函数,基于AllWindowedStream调用.process()时作为参数传入。

(5)、CoProcessFunction

合并(connect)两条流之后的处理函数,基于ConnectedStreams调用.process()时作为参数传入。

(6)、ProcessJoinFunction

间隔联结两条流之后的处理函数,基于IntervalJoined调用.process()时作为参数传入。

(7)、BroadcastProcessFunction

广播连接流处理函数,基于BroadcastConnectedStream调用.process()时作为参数传入。

(8)、KeyedBroadcastProcessFunction

按键分区的广播连接流处理函数,同样是基于 BroadcastConnectedStream 调用.process()时作为参数传入。

http://www.dtcms.com/a/332148.html

相关文章:

  • Docker容器定时任务时区Bug导致业务异常的环境变量配置解决方案
  • LeetCode Hot100:递归穿透值传递问题
  • 大模型系列——从训练到推理:网页数据在大语言模型中的新角色
  • 在Ubuntu 22.04上安装远程桌面服务
  • php危险函数,二.assert()[现版本已弃用]
  • 介绍TCP的拥塞控制
  • Linux操作系统从入门到实战(二十三)详细讲解进程虚拟地址空间
  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • Flink的状态管理
  • 手机分身空间:空间自由切换,一机体验双重生活!
  • 机械加工元件——工业精密制造的璀璨明珠
  • 【Golang】:流程控制语句
  • Python基础(Flask①)
  • 科技展厅通过多媒体技术能如何创新展示,超越展墙展板的固有限制?
  • 基于HTML5与Tailwind CSS的现代运势抽签系统技术解析
  • Rust+Python双核爬虫:高并发采集与智能解析实战
  • 基于单片机的超市储物柜设计
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪
  • UE UDP通信
  • 接口芯片断电高阻态特性研究与应用分析
  • UDP协议特点与网络通信
  • MIPI-csi调试
  • 物联网系统中传感器到网关到物联网平台的传输路径、协议、原理、用途与架构详解
  • 【机器学习深度学习】OpenCompass 评测指标全解析:让大模型评估更科学
  • tun/tap 转发性能优化
  • 当云手机出现卡顿怎么办?
  • 自适应UI设计解读 | Fathom 企业人工智能平台
  • 基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统