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

如何在Spark UI中查看Spark Stage执行内容及排查作业慢的原因?

查看Spark Stage执行内容及确认特定操作的方法

一、查看Stage正在执行的内容

  • 打开Spark UI的Jobs页面,找到目标作业后点击对应的Stage ID进入Stage详情页
  • Tasks标签:查看每个Task的执行明细,包括输入数据量、Shuffle读写量、各阶段耗时分布,能直接定位哪部分拖慢了速度
  • Event Timeline标签:你已经注意到Executor Computing Time占比高,这里可以展开每个Executor的时间线,明确是Shuffle Read、Sort还是纯计算环节耗时
  • DAG Visualization:这里的节点对应DataFrame/RDD的操作,你看到的ShuffleQueryStage对应Shuffle后的Stage,Sort是连接操作里的排序步骤,WholeStageCodegen是Spark的代码生成优化,把多个算子合并成一段代码执行

二、确认是否执行Coalesce或WriteFiles操作

方法1:Stage详情页的描述与任务指标

  • 进入Stage详情页后,顶部的Description会显示该Stage的核心操作,比如Coalesce会直接标注Coalesce,WriteFiles则会显示SaveAsParquet/WriteToDataSourceV2这类写操作描述
  • 查看Tasks标签的Task Metrics:如果是Coalesce阶段,Task数量会明显少于上游Stage(因为合并了分区);如果是WriteFiles阶段,会有Output Size指标,且任务类型为ResultTask(写操作属于Result Stage)

方法2:作业完整DAG视图

  • 回到Jobs页面,点击作业对应的DAG Visualization(不是单个Stage的),完整DAG会展示所有操作节点,Coalesce是单独的Coalesce节点,WriteFiles对应Save/Write类节点,一眼就能识别

方法3:搜索Event Log

  • 在Spark UI的Events页面,直接搜索coalesce或write关键词,能找到对应的操作触发日志,确认是否执行了这些步骤

三、结合你的场景的优化提示

  • 你用到的左连接确实会触发ShuffleQueryStage和Sort,因为Spark连接需要按关联键做Shuffle、排序,数据量大时这两步本身就耗时
  • Executor Computing Time高的话,先看每个Task的Input Size:如果单Task处理数据量过大,可调整spark.sql.shuffle.partitions参数(默认200)匹配集群资源;如果是Sort耗时,检查是否能减少不必要的排序(比如调整连接策略为广播连接,小表广播后可避免Shuffle)
  • 若确认有Coalesce,检查合并后的分区数是否太少导致单Task负载过高;若有WriteFiles,排查存储系统的写入瓶颈,或者调整写操作的分区数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:32:30