首页 > 解决方案 > Apache Zeppelin 如何计算 Spark 作业进度条?

问题描述

从 Apache Zeppelin 笔记本界面启动 spark 作业时,它会显示作业执行的进度条。但这一进展究竟意味着什么?有时它会缩小或扩大。是当前阶段的进步还是整个工作?

标签: apache-sparkapache-zeppelin

解决方案


在 Web 界面中,进度条显示函数返回的值getProgress(不是为每个解释器实现的,例如python)。

此函数返回一个百分比。

使用 Spark 解释器时,该值似乎是已完成任务的百分比(progressJobProgressUtil调用以下函数):

def progress(sc: SparkContext, jobGroup : String):Int = {
    val jobIds = sc.statusTracker.getJobIdsForGroup(jobGroup)
    val jobs = jobIds.flatMap { id => sc.statusTracker.getJobInfo(id) }
    val stages = jobs.flatMap { job =>
      job.stageIds().flatMap(sc.statusTracker.getStageInfo)
    }

    val taskCount = stages.map(_.numTasks).sum
    val completedTaskCount = stages.map(_.numCompletedTasks).sum
    if (taskCount == 0) {
      0
    } else {
      (100 * completedTaskCount.toDouble / taskCount).toInt
    }
}

同时,我在 Zeppelin 文档中找不到它。


推荐阅读