写点什么

Flink 的函数体系

作者:阿泽🧸
  • 2023-05-09
    北京
  • 本文字数:627 字

    阅读完需:约 2 分钟

Flink的函数体系

函数在 Flink 中叫作 Function,开发者编写的函数叫作 UDF(User Defined Function),当然 Flink 对于通用场景也内置了大量的预定义的通用 UDF 来简化开发,如 Join、GroupBy、Sum 等 SQL 语义等价的 UDF。UDF 在 Flink 的 DataStream 开发和 SQL 开发中被广泛使用。开发者使用 UDF 主要是实现非通用的计算逻辑,一般是业务逻辑。UDF、Function、用户自定义函数的含义是相同的。


按照输入和输入的不同特点分类,Flink 中的 UDF 大概分为 3 类:

1、SourceFunction

无上游 Function,SourceFunction 直接从外部数据存储读取数据,所以 SourceFunction 所在的算子是起始,没有上游算子。


2、SinkFunction

无下游 Function,SinkFunction 直接将数据写入外部存储,所以 Sink 函数所在的算子是作业的重点,没有下游算子。


SinkFunction 只是单纯地定义了数据写出到外部存储的行为,并没有 Function 的生命周期管理行为,函数的生命周期定义在 AbstractRichFunction 中。在 Connector 中实际实现 Sink 的时候,基本都是从 RickSinkFunction 和 TwoPhaseCommitSinkFunction 继承。

3、一般 Function

一般的 UDF 函数用在作业的中间处理步骤中,其接口定义与 SourceFunction 和 SinkFunction 不同。一般 UDF 所在的算子有上游算子,也有下游算子。


Flink 的一般 UDF 有单流输入和双流输入两种,从 UDF 输入、输出的模型来说,多流输入可以通过多个双流输入串联而成,这种设计比较简单实用。


SourceFunction 和 SinkFunction 主要在 Flink 中的连接器使用,也会在自定义读取、写出数据的时候使用。其余的大量实现逻辑的函数都属于一般 UDF。

发布于: 刚刚阅读数: 4
用户头像

阿泽🧸

关注

还未添加个人签名 2020-11-12 加入

还未添加个人简介

评论

发布
暂无评论
Flink的函数体系_flink_阿泽🧸_InfoQ写作社区