更新时间:2026-06-11 GMT+08:00
分享

配置Spark读取ORC和Parquet文件的Task数量

配置场景

Spark ORC和Parquet文件读取时,支持指定splitBytes大小和压缩率来控制读取文件阶段的Task数量,开启特性后读取ORC和Parquet文件的Task数量不随可用Executor数量的增加而一直增加,从而减少无效Task数量,降低Driver Task调度压力,提升Driver高负载场景下的整体性能。

使用约束

  • 本章节仅适用于MRS 3.6.0-LTS.1及之后版本。
  • 支持表的类型为:DataSource表、ORC Hive表(spark.sql.hive.convertMetastoreOrc=true时生效)、Parquet Hive表(spark.sql.hive.convertMetastoreParquet=true时生效)
  • 支持的数据格式:Parquet、ORC

配置参数

在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数:

参数名称

参数说明

默认值

spark.sql.orc.resourceFriendly.split.mode.enabled

用于控制Spark在读取ORC文件时是否启用splitBytes大小和压缩率来控制读取文件阶段的Task数量。

  • true:在资源充足情况下,支持按照spark.sql.preset.orc.stripe.size大小切分ORC文件后进行读取。
  • false:不启用splitBytes大小和压缩率来控制读取文件阶段的Task数量。

false

spark.sql.preset.orc.stripe.size

Spark在读取ORC文件时,推荐设置的orc.stripe.size值。

64MB

spark.sql.orc.fileCompressionFactor

ORC文件中压缩后的stripe大小/orc.stripe.size的值 ,数据不同,ORC文件中压缩后的stripe大小会不同。

1.0

spark.sql.parquet.resourceFriendly.split.mode.enabled

用于控制Spark在读取parquet文件时是否启用splitBytes大小和压缩率来控制读取文件阶段的Task数量。

  • true:在资源充足情况下,支持按照spark.sql.preset.parquet.block.size大小切分Parquet文件后进行读取。
  • false:不启用splitBytes大小和压缩率来控制读取文件阶段的Task数量。

false

spark.sql.preset.parquet.block.size

Spark在读取parquet文件时,推荐设置的parquet.block.size值。

128MB

spark.sql.parquet.fileCompressionFactor

parquet文件中压缩后的Row Group大小/parquet.block.size的值 ,数据不同,parquet文件中压缩后的Row Group大小会不同。

1.0

读取文件时的SplitBytes计算逻辑

  • 在可用资源不足的情况下,会优先按照可用资源计算的SplitBytes进行读取文件切分。
  • spark.sql.orc.resourceFriendly.split.mode.enabled=true时,ORC文件读取时的SplitBytes计算逻辑:
    orcStripSize = spark.sql.preset.orc.stripe.size * spark.sql.orc.fileCompressionFactor

    最终使用的SplitBytes = Math.max(基于可用资源计算的SplitBytes, orcStripSize)

  • spark.sql.parquet.resourceFriendly.split.mode.enabled=true时,Parquet文件读取时的SplitBytes计算逻辑:
    parquetBlockSize = spark.sql.preset.parquet.block.size * spark.sql.parquet.fileCompressionFactor

    最终使用的SplitBytes = Math.max(基于可用资源计算的SplitBytes, parquetBlockSize)

相关文档