在Flink编程中,不管你是使用DataStream api还是 Table/SQL ,接触最多的就是UserFunction , 比喻说MapFunction、ScalarFunction, 在这些Function 里面可以自定义用户的业务处理逻辑,但是这些Function是如何被调用的呢?本文主要介绍Function 被调用的流程以及对应的方法如何被调用的。
核心调用逻辑

当我们编写完成一个Flink-Job 就会将代码打包成为jar提交到集群中去,当整个资源申请、任务调度完成之后就开始执行这个job,从source到transform 到最后sink 都是在TaskManager 资源节点中执行。Flink-Job 会被划分为一个个Task(整个任务中的一部分处理逻辑)节点, 每一个Task节点都在一个Thread中执行,在这个Thread中会不断的调用UserFunction的相应方法(如上图)。这个是一个大概的处理流程, 让用户只需要关心自身业务处理逻辑,无须关心网络通信、数据传输等流程。
接下来介绍具体的调用逻辑:


本文探讨了Flink中UserFunction的执行流程,从Job打包提交到TaskManager执行,详细解析了Task、StreamTask、OperatorChain和StreamOperator的角色。在Operator内部,如StreamMap,调用UserFunction的方法如map,实现业务逻辑。通过了解这一过程,有助于理解Flink的内部工作机制。
最低0.47元/天 解锁文章
1204

被折叠的 条评论
为什么被折叠?



