更新时间:2025-06-11 GMT+08:00

配置parquet表的压缩格式

操作场景

在Spark中,Parquet表是一种非常常用的数据存储和处理方式。Parquet表在设计上通过压缩和编码优化,极大地减少了数据的存储空间并提高了数据的读取速度。

当前对于parquet表的压缩格式分以下两种情况进行配置:

  1. 对于分区表,需要通过parquet本身的配置项“parquet.compression”设置parquet表的数据压缩格式。如在建表语句中设置tblproperties:"parquet.compression"="snappy"。
  2. 对于非分区表,需要通过“spark.sql.parquet.compression.codec”配置项来设置parquet类型的数据压缩格式。直接设置“parquet.compression”配置项是无效的,因为它会读取“spark.sql.parquet.compression.codec”配置项的值。当“spark.sql.parquet.compression.codec”未做设置时默认值为“snappy”,“parquet.compression”会读取该默认值。

因此,“spark.sql.parquet.compression.codec”配置项只适用于设置非分区表的parquet压缩格式。

配置参数

  1. 登录FusionInsight Manager系统。

    详细操作请参考访问集群Manager

  2. 选择“集群 > 服务 > Spark2x/Spark > 配置”,单击“全部配置”,搜索并调整以下参数。

    表1 参数介绍

    参数

    参数说明

    取值示例

    spark.sql.parquet.compression.codec

    对于非分区parquet表,设置其存储文件的压缩格式。

    取值范围:

    • none:不压缩,适合已经压缩的数据或对存储空间不敏感的场景。
    • uncompressed:不压缩,适合进行快速读取,但会占用较多的存储空间。
    • snappy:压缩比较快,压缩比适中,是默认值,适用于大多数场景。
    • gzip:压缩比高,但压缩和解压速度较慢。
    • lz4:压缩比适中,压缩和解压速度较快。
    • zstd:压缩比高,压缩和解压速度较快,适用于需要高压缩比但又希望保持较好性能的场景。

    snappy

  1. 修改参数配置后,单击“保存”,根据界面提示操作后,等待配置保存成功。
  2. Spark服务端配置更新后,如果“配置状态”为“配置过期”,则需重启组件以使配置生效。

    图1 修改Spark配置

    在Spark服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。

    如果使用Spark客户端提交任务,修改了集群的参数“spark.sql.parquet.compression.codec”后,需要重新下载客户端才能使配置生效,请参考使用MRS客户端

    组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。