Что в моей искровой оболочке означают записи, подобные приведенным ниже, когда я выполняю функцию?
[Stage7:===========> (14174 + 5) / 62500]
apache-spark
Rmckeown
источник
источник
Ответы:
То, что вы получаете
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 }
источник
Предположим, вы видите следующее (X, A, B, C всегда неотрицательные целые числа):
(например, в вопросе X = 7, A = 14174, B = 5 и C = 62500)
Вот что происходит на высоком уровне: Spark разбивает работу на этапы и задачи на каждом этапе. Этот индикатор прогресса означает, что этап X состоит из задач C. Во время выполнения A и B начинаются с нуля и продолжают меняться. A - это всегда количество уже завершенных задач, а B - количество задач, выполняемых в данный момент. Для этапа с большим количеством задач (намного больше, чем у вас есть воркеров) вы должны ожидать, что B вырастет до числа, которое соответствует количеству воркеров в кластере, затем вы должны начать видеть увеличение A по мере выполнения задач. Ближе к концу, по мере выполнения последних нескольких задач, B начнет уменьшаться, пока не достигнет 0, после чего точка A должна быть равна C, этап завершен, и искра переходит к следующему этапу. C будет оставаться постоянным в течение всего времени, помните, что это общее количество задач на этапе и никогда не меняется.
====> показывает процент выполненной работы на основе того, что я описал выше. Вначале значок> будет направлен влево и будет двигаться вправо по мере выполнения задач.
источник