Flink 源码分析之 Flink 自定义 source、sink 是如何起作用的
自从学会自定义source之后,一直都比较好奇,为什么我实现一个 *SourceFunction,我自己定义的代码就可以跟 Flink很好的整合在一起?
下面以 RichParallelSourceFunction 为例,来具体看一下究竟是自定义 source 是如何执行的
首先看一下 Flink中的抽象类 AbstractUdfStreamOperator,专门负责Rich*Function的 open 和close方法
再继续看一下StreamSource
自此为止,我们自定义source function 的 open、close、cancel、run方法就都可以正常的调用运行了,然后就可以源源不断的产生数据了。
sink也是类似的。首先通过AbstractUdfStreamOperator类调用 open、close方法,然后还有 StreamSink调用 自定义中的 invoke 方法。
版权声明: 本文为 InfoQ 作者【shengjk1】的原创文章。
原文链接:【http://xie.infoq.cn/article/1e78fbf0eec32358527ab52c1】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论