进度条上的数字在火星壳中是什么意思?
在我的火花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
日志级别为ERROR
或WARN
( !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在整个过程中保持不变。
====>显示了基于我上面描述的完成工作的百分比。