parquet :开源的列式存储文件格式
1. Parquet文件定义与核心概念
Parquet是一种开源的列式存储文件格式,由Twitter和Cloudera合作开发,2015年成为Apache顶级项目。其设计目标是为大数据分析提供高效存储和查询,主要特点包括:
- 列式存储:数据按列而非按行组织,相同数据类型集中存储,显著提升分析查询效率(如仅读取部分列)。
- 高效压缩:支持Snappy、Gzip、Zstd、LZO等算法,压缩率比行式格式(如CSV)高90%以上,大幅降低存储成本。
- 自描述Schema:文件内嵌元数据(如数据类型、结构),确保跨系统一致性。
- 嵌套数据支持:基于Google Dremel论文的算法处理复杂嵌套结构(如JSON/Protocol Buffers)。
2. 文件结构与技术细节
2.1 逻辑结构
Parquet文件由三部分组成:
- Header:4字节魔术数字
PAR1
,标识文件格式。 - Data Block:包含多个行组(Row Group),每个行组是数据处理的并行单元。