Parquet:元数据和 common_metadata 之间的区别

Parquet: difference between metadata and common_metadata

写元数据文件时,ThriftParquetWriter实际上生成了两个文件:_metadata_common_metadata

https://github.com/apache/parquet-mr/blob/master/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java

这两个文件有什么区别?它们的文件大小不同,所以肯定有区别

谢谢

在查看 https://github.com/apache/parquet-mr/blob/master/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java 的源代码时,在我看来:

_common_metadata 包含该目录中 parquet 文件的合并模式

_metadata 将仅包含该目录中最近写入的镶木地板文件的架构

情况似乎并非如此。我只在分层集中看到 _common_metadata(其中有列编码为目录名称)。 _common_metadata 包含整个 table 的架构,包括那些分层列,而 _metadata 包含用于部分文件的架构(省略分层列),还包括每个文件列的统计信息(最小值、最大值等)对于所有文件,及其完整的相对路径名。