type
status
date
slug
summary
tags
category
icon
password
StoreSinkWriteImpl
从
StoreSinkWriteImpl
开始,前面 Sink 调用 StoreSinkWriteImpl
的流程先跳过。StoreSinkWriteImpl
提供了两个写入方法:- write(InternalRow rowData) 是在 fixed bucket 模式下使用的,按 key 计算hash 即可。
- write(InternalRow rowData, int bucket) 是在 dynamic bucket 模式下使用的,bucket 值需要根据索引文件算出来。
MergeTreeWriter
对于主键表来说,会调用到
MergeTreeWriter
的 write 方法。可以看到,会尝试向缓存中写入数据,如果数据写入失败,会去刷出缓存,再往新的缓存写数据。内存满后 刷写writeBuffer. 排序后, 遍历buffer. 应用merge函数, 并创建level 0的 file writer, 将数据写入到datafile中。如果同时配置了Changelog producer是input,那么会将原始的数据写出到Changelog文件中。