You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark读取HDFS中ORC格式表时生成7个任务的原因咨询

Spark读取小ORC文件仅生成7个任务的原因分析

该现象完全符合Spark SQL读取文件时的默认分区计算逻辑,核心由3个配置参数和小文件的权重计算规则共同决定:

  • 影响分区数的核心配置(均为Spark默认值):
    • spark.sql.files.maxPartitionBytes:单分区允许的最大数据量,默认值为128MB
    • spark.sql.files.openCostInBytes:打开单个文件的预估IO开销,默认值为4MB,小于该值的小文件会按4MB计算权重,避免单分区打开过多小文件导致性能下降
    • spark.default.parallelism:Spark作业的默认并行度,取值等于集群所有Executor的总核心数,你当前配置为1个Executor5核,因此该值为5,生成的分区数不会低于该值
  • 具体分区数计算过程:
    1. 你场景中的ORC文件单文件大小为170KB,远小于4MB的openCost阈值,因此每个小文件都按4MB的权重计入总容量
    2. 200个文件的总权重为 200 * 4MB = 800MB
    3. 按单分区最大128MB计算,800MB / 128MB = 6.25,向上取整后得到7个分区,该值大于默认最小并行度5,因此最终读取阶段生成7个任务
  • 补充说明:ORC为可分割的列式存储格式,本场景中单文件远小于切片阈值,不会出现单个文件被拆分为多个分区的情况,7个任务对应的分区均为多个小ORC文件合并后的结果。

内容的提问来源于stack exchange,提问作者Vikas。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:00:04