首页/数据/数据工程与 ETL 速查/Parquet 列式文件格式
管道基础52 条

Parquet 列式文件格式

Parquet 是数据湖常用列式格式:自带 schema、按 row group 与 page 组织、每列保存统计信息,配合分区目录可大幅减少扫描量。

特点列式、自带 schema、列级统计、支持嵌套结构
粒度row group(常见 128MB 级)→ page
生态Spark、Hive、Trino、Flink 均可直接读写

查看文件 schema(pyarrow)

查看文件 schema(pyarrow)
python -c "import pyarrow.parquet as pq; print(pq.read_schema('part-00000.parquet'))"

Spark 分区写入

Spark 分区写入
df.write.mode('overwrite') \
  .partitionBy('dt') \
  .parquet('s3a://bucket/dwd/orders')
单文件控制在百 MB 级、避免海量小文件,是扫描性能与写入成本的平衡点。

易错点

  • schema 合并(mergeSchema)在大目录下开销高,字段变更尽量走显式 schema 演进
  • 对 Parquet 做频繁 UPDATE 会产生大量重写,需要用支持 upsert 的表格式

数据来源与参考

  • Apache Parquet 官方文档
  • Apache Spark 官方文档:Parquet Files
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌