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

时间:2019-06-18 15:39:46

标签: apache-spark apache-zeppelin

从Apache Zeppelin笔记本电脑界面启动Spark作业时,它会向您显示作业执行的进度条。但是,这一进展实际上意味着什么?有时它会缩小或扩展。是当前阶段的进展还是整个工作?

1 个答案:

答案 0 :(得分:1)

在Web界面中,进度条显示了getProgress函数返回的值(并非为每个交织者都实现,例如python)。

此函数返回一个百分比。

使用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文档中找不到指定的内容。