前言
本着学习hudi-flink源码的目的,利用之前总结的文章Hudi Flink SQL代码示例及本地调试中的代码进行调试,记录调试学习过程中主要的步骤及对应源码片段。
版本
- Flink 1.15.4
- Hudi 0.13.0
目标
在文章Hudi Flink SQL代码示例及本地调试中提到:我们发现Table API的入口和DataStream API的入口差不多,DataStream API的入口是在HoodiePipeline
的sink
和source
方法里,而这两个方法也是分别调用了HoodieTableFactory
的createDynamicTableSink
和createDynamicTableSource
。那么Table API的代码怎么一步一步走到createDynamicTableSink
和createDynamicTableSource
的呢?返回HoodieTableSink
之后又是怎么写数据的?因为我发现Hudi写数据的主要逻辑入口好像是在HoodieTableSink.getSinkRuntimeProvider
的方法体里,这些问题之前都没有搞清楚,所以这次的目标就是要搞清楚:1、Table API 的入口到createDynamicTableSink
返回HoodieTableSink
的主要代码步骤; 2、在哪里调用HoodieTableSink.getSinkRuntimeProvider
的方法体进行后面的写Hudi逻辑的