Spark集群运行任务报错org.apache.spark.SparkException: Job aborted求助
Spark Job Aborted(org.apache.spark.SparkException)排查方案
- 先抓完整错误栈:
org.apache.spark.SparkException: Job aborted只是顶层报错,必须看日志里的Caused by明细,到底是OOM、数据倾斜、任务超时还是依赖冲突,这是排查的核心第一步。 - 内存配置排查:
- 核对Driver/Executor内存参数:比如
spark.driver.memory、spark.executor.memory、spark.executor.memoryOverhead,Standard_D12_v2有28GB内存,别把内存拉满,留足系统开销——比如executor内存设16GB,overhead设4GB就比较稳妥。 - 若为Shuffle阶段OOM:调大
spark.shuffle.memoryFraction或spark.shuffle.file.buffer,也可以开启外部排序spark.shuffle.spill.compress。
- 核对Driver/Executor内存参数:比如
- 数据倾斜排查:
- 先查key分布:用
df.groupBy("key").count().orderBy(desc("count"))看是否有某个key占了绝大多数数据,导致单个任务扛不住。 - 针对性解决:给倾斜key加盐拆分、单独处理大key,或者调整
spark.sql.shuffle.partitions(默认200,根据数据量调到1000左右)。
- 先查key分布:用
- 资源与集群配置:
- 检查worker节点状态:有没有节点宕机、CPU/内存被其他任务占用的情况。
- 调整并行度:
spark.default.parallelism设为worker总核数的2-3倍,Standard_D12_v2单节点4核,2-8个worker的话,并行度设32-96区间就行。
- 数据与依赖问题:
- 检查输入数据:有没有损坏、格式错误、空值爆炸的情况,抽样验证或者加异常处理逻辑。
- 排查依赖冲突:如果有和Spark自带版本冲突的jar包(比如guava、jackson),用
spark-submit的--exclude-packages把冲突包排除。
- 任务超时排查:
- 调大超时参数:
spark.network.timeout(默认120s)、spark.executor.heartbeatInterval(默认10s),大任务可以适当拉长这些时间。
- 调大超时参数:
内容的提问来源于stack exchange,提问作者subhasree karibandi
相关产品推荐
相关产品推荐

