У моїй іскровій оболонці, що означають записи, як показано нижче, коли я виконую функцію?
[Stage7:===========> (14174 + 5) / 62500]
У моїй іскровій оболонці, що означають записи, як показано нижче, коли я виконую функцію?
[Stage7:===========> (14174 + 5) / 62500]
Відповіді:
Те, що ви отримуєте, це Console Progress Bar
,
[Stage 7:
показує той етап, на якому ви перебуваєте зараз, і
(14174 + 5) / 62500]
є (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
. Індикатор виконання показує numCompletedTasks
/ totalNumOfTasksInThisStage
.
Він відображатиметься, коли обидва spark.ui.showConsoleProgress
значення true (за замовчуванням) і рівень журналу в conf/log4j.properties
is ( ERROR
або true).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
}
Припустимо, ви бачите наступне (X, A, B, C завжди невід’ємні цілі числа):
[Stage X:==========> (A + B) / C]
(наприклад, у питанні X = 7, A = 14174, B = 5 та C = 62500)
Ось що відбувається на високому рівні: Іскра розбиває роботу поетапно і завдання на кожному етапі. Цей показник прогресу означає, що Етап X складається із завдань C. Під час виконання A і B починаються з нуля і продовжують змінюватися. A - це завжди кількість вже виконаних завдань, а B - кількість завдань, які виконуються в даний час. Для етапу з багатьма завданнями (набагато більше, ніж у вас є працівники), слід очікувати, що B зросте до числа, яке відповідає кількості робочих місць у кластері, тоді ви повинні почати бачити збільшення, коли завдання будуть виконані. Ближче до кінця, коли виконується кілька останніх завдань, B почне зменшуватися, поки не досягне 0, тоді точка A повинна дорівнювати C, етап закінчений, і іскра переходить на наступний етап. C залишатиметься постійним протягом усього часу, пам’ятайте, що це загальна кількість завдань на етапі і ніколи не змінюється.
====> показує відсоток виконаної роботи на основі того, що я описав вище. На початку> буде вліво і рухатиметься вправо, коли завдання будуть виконані.