flink写入paimon流程代码

入口是FlinkTableSink,继承自FlinkTableSinkBase

然后到了FlinkSinkBuilder的build()

以buildForFixedBucket为例

FixedBucketSink extends FlinkWriteSink<InternalRow>
而 FlinkWriteSink<T> extends FlinkSink<T> 

所以代码走到了FlinkSink 的sinkFrom()

分别调用了doWrite()和doCommit()

doWrite()调用了createWriteOperator,java类的继承机制这个实现又回到了子类FixedBucketSink类

注意此时父类doWrite()里传参的时候调用了createWriteProvider()返回StoreSinkWrite.Provider

接着上面代码RowDataStoreWriteOperator类,里面有一个processElement()

RowDataStoreWriteOperator继承TableWriteOperator,这个类又通过provider初始化了write,RowDataStoreWriteOperator类刚才用到了父类TableWriteOperator的write对象

以StoreSinkWrite.Provider是StoreSinkWriteImpl为例,那上面的write()实际调用就是这个类的write()

StoreSinkWriteImpl类又有一个write对象=> FileStoreWrite

FileStoreWrite其中一个子类AbstractFileStoreWrite需要细看,这次简单看下

其中一部分是用了RecordWriter去写数据

最终走到了MergeTreeWriter的write(),判断内存是否满了,满了就溢出磁盘

flushWriteBuffer()做了很多,包括判断是否需要进行等待上一次compact结束、数据flush、保存一些信息方便checkpoint、尝试触发一次新的compact

writeBuffer.forEach这段keyComparator,mergeFunction两个对象是传参进来的

Comparator看起来是一个比较器

mergeFunction对应paimon的几个primary key表类型

doCommit()时new了一个CommitterOperator(),

这个类主要有几个方法

commiter.commit的逻辑是将所有的flush信息进行一次commit操作,最终flush信息会被序列化成json信息保存在snapshot文件中,当commit成功后,Paimon表会新增一次snapshot

下次介绍抽象类和合并提交具体代码

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为什么要学习这门课程?·新一代流式数据湖技术组件深入讲解,帮助你快速构造数据湖知识体系。·为构建湖仓一体架构提供底层技术支撑。本课程将从原理、架构、底层存储细节、性能优化、管理等层面对Paimon流式数据湖组件进行详细讲解,原理+实战,帮助你快速上手使用数据湖技术。讲师介绍华为HCIP认证大数据高级工程师北京猎豹移动大数据技术专家中科院大数据研究院大数据技术专家51CTO企业IT学院优秀讲师电子工业出版社2022年度优秀作者出版书籍:《Flink入门与实战》、《大数据技术及架构图解实战派》。本课程提供配套课件、软件、试题、以及源码。课程内容介绍:1、什么是Apache Paimon2、Paimon的整体架构3、Paimon的核心特点4、Paimon支持的生态5、基于Flink SQL操作Paimon6、基于Flink DataStream API 操作Paimon7、Paimon中的内部外部8、Paimon中的分区和临时9、Paimon中的Primary Key(主键)10、Paimon中的Append Only(仅追加)11、Changelog Producers原理及案例实战12、Merge Engines原理及案例实战13、Paimon中的Catalog详解14、Paimon中的Table详解15、PaimonHive Catalog的使用16、动态修改Paimon属性17、查询Paimon系统18、批量读取Paimon19、流式读取Paimon20、流式读取高级特性Consumer ID21、Paimon CDC数据摄取功能22、CDC之MySQL数据同步到Paimon23、CDC之Kafka数据同步到Paimon24、CDC高级特性之Schema模式演变25、CDC高级特性之计算列26、CDC高级特性之特殊的数据类型映射27、CDC高级特性之中文乱码28、Hive引擎集成Paimon29、在Hive中配置Paimon依赖30、在Hive中读写Paimon31、在Hive中创建Paimon32、HivePaimon数据类型映射关系33、Paimon底层文件基本概念34、Paimon底层文件布局35、Paimon底层文件操作详解36、Flink流式写入Paimon过程分析37、读写性能优化详细分析38、Paimon中快照、分区、小文件的管理39、管理标签(自动管理+手工管理)40、管理Bucket(创建+删除+回滚)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange大数据技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值