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

Apache Spark任务数小于分区数问题咨询

Spark df.count()任务数少于分区数的原因及解决办法

问题相关截图

Spark UI界面
DF创建代码

核心原因:自适应查询执行(AQE)的自动合并优化

Databricks社区版默认开启了自适应查询执行(Adaptive Query Execution,AQE),当Spark检测到小分区时,会自动合并这些分区以减少任务数量、降低调度开销。你通过repartition(10)设置了10个分区,但由于range(1000)生成的数据量极小,每个分区仅包含少量数据,AQE触发了分区合并逻辑,最终执行count时的任务数被压缩到更少的数量。

验证与解决方法

  • 关闭AQE验证:在执行DataFrame创建代码前,添加以下配置关闭自适应优化,再次运行count操作,任务数就会和分区数一致:
    spark.conf.set("spark.sql.adaptive.enabled", "false")
    
  • 确认实际分区数:可以通过df.rdd.getNumPartitions查看DataFrame的实际分区数量,对比Spark UI中的任务数,验证是否由AQE导致分区合并。

补充说明

即使是窄依赖操作,Spark优化器也会根据数据实际情况动态调整执行计划。当分区数据量过小的时候,合并分区是合理的性能优化策略,能避免大量小任务带来的调度资源浪费。

内容的提问来源于stack exchange,提问作者Sree Sanjeev Kandasamy Gokulra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:39:56