在我的spark-shell中,当我执行一个函数时,下面的条目是什么意思?
[Stage7:===========> (14174 + 5) / 62500]
Run Code Online (Sandbox Code Playgroud)
yjs*_*hen 96
你得到的是一个Console Progress Bar,
[Stage 7:显示你现在所处的舞台,并且
(14174 + 5) / 62500]是(numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage].进度条显示numCompletedTasks/ totalNumOfTasksInThisStage.
当两者都 spark.ui.showConsoleProgress为真(默认情况下)且日志级别conf/log4j.properties为ERROR或WARN(!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
}
Run Code Online (Sandbox Code Playgroud)
gae*_*123 30
假设您看到以下内容(X,A,B,C始终为非负整数):
[Stage X:==========> (A + B) / C]
Run Code Online (Sandbox Code Playgroud)
(例如在问题X = 7,A = 14174,B = 5和C = 62500)
以下是高层次的进展:Spark在每个阶段分阶段完成工作.此进度指示器表示阶段X由C任务组成.在执行期间,A和B从零开始并不断变化.A始终是已完成的任务数,B是当前正在执行的任务数.对于具有许多任务的阶段(比您拥有的工作人员多的方式),您应该看到B增长到与群集中的工作人员数量相对应的数字,然后您应该在任务完成时开始看到A增加.接近尾声,当最后几个任务执行时,B将开始减小直到达到0,此时A应该等于C,阶段完成,火花移动到下一阶段.C将在整个时间内保持不变,记住它是阶段中的任务总数,永远不会改变.
====>根据我上面描述的内容显示完成工作的百分比.在开始时,>将向左移动,并在任务完成时向右移动.
| 归档时间: |
|
| 查看次数: |
10147 次 |
| 最近记录: |