tutorial spark examples example apache-spark

apache-spark - examples - apache spark wikipedia



¿Qué significan los números en la barra de progreso en spark-shell? (2)

En mi spark-shell, ¿qué significan las entradas como las siguientes cuando ejecuto una función?

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


Lo que obtienes es una Console Progress Bar , [Stage 7: muestra la etapa en la que te encuentras ahora, y (14174 + 5) / 62500] es (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage] . La barra de progreso muestra numCompletedTasks / totalNumOfTasksInThisStage .

Se mostrará cuando spark.ui.showConsoleProgress sea ​​verdadero (por defecto) y el nivel de registro en conf/log4j.properties sea ERROR o WARN ( !log.isInfoEnabled es verdadero).

Veamos el código en ConsoleProgressBar.scala que lo muestra:

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 }


Supongamos que ve lo siguiente (X, A, B, C son siempre enteros no negativos):

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

(por ejemplo, en la pregunta X = 7, A = 14174, B = 5 y C = 62500)

Esto es lo que está sucediendo a un alto nivel: Spark divide el trabajo en etapas y tareas en cada etapa. Este indicador de progreso significa que la Etapa X se compone de tareas en C. Durante la ejecución, A y B comienzan en cero y siguen cambiando. A es siempre el número de tareas ya finalizadas y B es el número de tareas que se están ejecutando actualmente. Para una etapa con muchas tareas (mucho más que los trabajadores que tiene), debe esperar ver que B aumente a un número que corresponda a la cantidad de trabajadores que tiene en el clúster, luego debe comenzar a ver A aumentar a medida que se completan las tareas. Hacia el final, a medida que se ejecutan las últimas tareas, B comenzará a disminuir hasta llegar a 0, momento en el que A debería ser igual a C, la etapa está terminada y la chispa se mueve a la siguiente etapa. C permanecerá constante durante todo el tiempo, recuerde que es el número total de tareas en la etapa y nunca cambia.

El ====> muestra el porcentaje de trabajo realizado en base a lo que describí anteriormente. Al principio, el> estará hacia la izquierda y se moverá hacia la derecha a medida que se completen las tareas.