首页/数据/数据工程与 ETL 速查/压缩算法选择:gzip/snappy/zstd 等
管道基础52 条

压缩算法选择:gzip/snappy/zstd 等

压缩在“压缩比、速度、可切分性”之间取舍:snappy/lz4 偏快,gzip 通用,zstd 在压缩比与速度之间较均衡;列存内部按块压缩,切分性影响较小。

算法

算法压缩比速度典型用途
snappy中快列存默认、热数据
lz4中很快高吞吐场景
gzip较高中通用归档、文本
zstd高较快冷数据、成本敏感
bzip2高慢离线归档

Spark 写入压缩配置

Spark 写入压缩配置
spark.conf.set('spark.sql.parquet.compression.codec', 'zstd')
df.write.mode('overwrite').parquet('s3a://bucket/dwd/orders')
普通 gzip 文本在 Hadoop 里不可切分,单大文件会限制并行度;列存格式内部按页压缩,不受此限制。

易错点

  • 后缀名与真实压缩格式不一致会导致引擎报错或按错误方式解压
  • 对已压缩的列存再整体 gzip,收益低且失去并行读取能力

数据来源与参考

  • Apache Parquet 官方文档:Compression
  • Hadoop 官方文档:Compression Codecs 可切分性说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌