Apache Zeppelin 如何计算 Spark 作业进度条?

How Apache Zeppelin computes Spark job progress bar?

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

在网页界面中,进度条显示的是getProgress函数返回的值(不是每个interpeters都实现的,比如python)。

此函数returns百分比。

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

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 文档中找不到它。