作者:宋军,花名嵩林,阿里云EMR技术专家。从事Spark内核优化,对SparkCore/SprakSQL有深入了解,Spark Contributor
Delta元数据解析
元数据初识
Delta有自己的元数据管理,主要有6种类型的元数据Action:
SetTransaction
AddFile
RemoveFile
Metadata
Protocol
CommitInfo
Delta的元数据统一存放在Delta的logpath下面的_delta_log文件夹中
_delta_log文件夹位置
不管DeltaTable是分区表还是非分区表,_delta_log文件夹只有一个,都位于Delta的logpath下面

_delta_log文件夹内容
_delta_log文件夹下存储了所有Delta的相关元数据,如下所示
Delta每次事务commit都会产生一个json的元数据文件,文件内容包括本次commit做的所有action,比如AddFile/RemoveFile等等;
每产生一个新的json文件就会产生一个新的Delta的snapshot,snapshot的版本即该json文件中的数字,该数字必须是连续自增(不能缺失),Delta的某个版本的snapshot是通过顺序回放所有小于等于该snapshot版本号的所有json文件得到;
每个json文件会有一个对应的crc校验文件(源码中有相关代码,但是并没有实际去写该crc)
对元数据做checkpoint时会产生新的checkpoint文件(parquet)
如下FileNames类用来管理_delta_log文件夹下相关文件的文件名

如下_delta_log文件示例:

_delog_log文件内容
json文件
</

本文深入解析Delta存储的元数据,包括_Delta_log文件夹的位置、内容和元数据解析,涵盖Actions(如AddFile、RemoveFile)、CommitInfo、Protocol等关键概念,阐述了Delta表的历史快照和检查点机制。
最低0.47元/天 解锁文章
1652

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



