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

如何汇总Spark作业中Executor的计算时间以统计整体资源使用率

汇总Spark作业所有任务的Executor计算时间的方法

以下是几种实用的方法,可快速统计260K任务规模Spark作业的总Executor计算时间:

方法一:Spark UI/History Server 内置统计

  • 打开Spark UI(或History Server),进入目标作业的Jobs页面,点击对应作业后切换到Stages标签页。
  • 每个Stage的统计区域会显示该Stage下所有任务的总Executor计算时间(通常标注为Executor Computing Time),直接将所有Stage的该数值累加,即可得到整个作业的总Executor计算时间。若作业包含多个Job,需累加所有Job下的Stage时间。

方法二:解析Spark事件日志

  • 确保作业运行前已开启事件日志(配置spark.eventLog.enabled=true),Spark会生成包含所有任务细节的JSON格式事件日志。
  • 编写脚本提取每个任务的executorRunTime字段(单位毫秒)并求和,示例Python脚本:
import json

total_exec_time_ms = 0
# 替换为你的事件日志路径
log_path = "/path/to/spark/event/logs/app-xxxxxx"

with open(log_path, "r") as log_file:
    for line in log_file:
        try:
            event = json.loads(line)
            if event.get("Event") == "TaskEnd":
                task_metrics = event.get("TaskMetrics", {})
                total_exec_time_ms += task_metrics.get("executorRunTime", 0)
        except json.JSONDecodeError:
            continue

print(f"总Executor计算时间:{total_exec_time_ms / 1000:.2f} 秒")

方法三:命令行日志分析

  • 若作业日志(如YARN容器日志、本地Spark运行日志)中包含任务执行时间信息,可通过命令行工具批量提取求和:
# 假设日志中存在形如"executorRunTime: 1234"的记录
grep -E "executorRunTime: [0-9]+" spark-job-logs/*.log | awk '{sum += $2} END {print "总Executor计算时间:" sum/1000 " 秒"}'

资源使用率计算参考

得到总Executor计算时间后,可通过以下公式估算集群资源使用率:
资源使用率 = 总Executor计算时间 / (集群总CPU核数 × 作业总运行时间) × 100%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:49:58