进度条上的数字在火星壳中是什么意思?

在我的火花shell中,当我执行一个函数时,下面的input是什么意思?

[Stage7:===========> (14174 + 5) / 62500] 

你得到的是一个Console Progress Bar[Stage 7:显示你现在在(14174 + 5) / 62500]阶段, (14174 + 5) / 62500](numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage] 。 进度条显示numCompletedTasks / numCompletedTasks

spark.ui.showConsoleProgress为true(默认情况下) 并且 conf/log4j.properties日志级别为ERRORWARN!log.isInfoEnabled为true)时, !log.isInfoEnabled

让我们来看看ConsoleProgressBar.scala中的代码:

 private def show(now: Long, stages: Seq[SparkStageInfo]) { val width = TerminalWidth / stages.size val bar = stages.map { s => val total = s.numTasks() val header = s"[Stage ${s.stageId()}:" val tailer = s"(${s.numCompletedTasks()} + ${s.numActiveTasks()}) / $total]" val w = width - header.length - tailer.length val bar = if (w > 0) { val percent = w * s.numCompletedTasks() / total (0 until w).map { i => if (i < percent) "=" else if (i == percent) ">" else " " }.mkString("") } else { "" } header + bar + tailer }.mkString("") // only refresh if it's changed of after 1 minute (or the ssh connection will be closed // after idle some time) if (bar != lastProgressBar || now - lastUpdateTime > 60 * 1000L) { System.err.print(CR + bar) lastUpdateTime = now } lastProgressBar = bar } 

假设您看到以下内容(X,A,B,C总是非负整数):

 [Stage X:==========> (A + B) / C] 

(例如在问题X = 7,A = 14174,B = 5和C = 62500)

这是一个高层次的事情:星火把每个阶段的阶段和任务分解开来。 这个进度指示器意味着阶段X由C任务组成。 当你看它时,A是已经完成的任务的数量,B是当前正在执行的任务的数量。 对于一个有很多任务的阶段(比你有更多的工作方式),你应该期望看到B增长到一个数字,这个数字对应着你在集群中有多less工人,那么随着任务的完成,你应该开始看到增加。 接近B的端点将开始下降,直到达到0,此时A应该等于C,并且火花移动到下一个阶段。 C在整个过程中保持不变。

====>显示了基于我上面描述的完成工作的百分比。