내 스파크 쉘에서 함수를 실행할 때 아래와 같은 항목은 무엇을 의미합니까?
[Stage7:===========> (14174 + 5) / 62500]
답변
당신이 얻는 것은이고 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는 항상 음의 정수가 아닙니다).
[Stage X:==========> (A + B) / C]
(예 : 질문 X = 7, A = 14174, B = 5 및 C = 62500)
높은 수준에서 진행되는 작업은 다음과 같습니다. Spark는 각 단계의 작업과 작업을 단계적으로 나눕니다. 이 진행률 표시기는 X 단계가 C 작업으로 구성되어 있음을 의미합니다. 실행 중에 A와 B는 0에서 시작하여 계속 변경됩니다. A는 항상 이미 완료된 작업의 수이고 B는 현재 실행중인 작업의 수입니다. 작업이 많은 단계 (사용자가 보유한 작업자보다 훨씬 많음)의 경우 B가 클러스터에있는 작업자 수에 해당하는 숫자로 증가 할 것으로 예상해야합니다. 그런 다음 작업이 완료되면 A가 증가하는 것을 확인해야합니다. 마지막으로, 마지막 몇 개의 작업이 실행됨에 따라 B는 0에 도달 할 때까지 감소하기 시작합니다.이 지점에서 A는 C와 같아야하며 단계가 완료되고 스파크는 다음 단계로 이동합니다. C는 전체 시간 동안 일정하게 유지되며 스테이지의 총 작업 수이며 절대 변경되지 않습니다.
====>는 위에서 설명한 내용을 기반으로 한 작업 비율을 보여줍니다. 처음에는>가 왼쪽에 있고 작업이 완료되면 오른쪽으로 이동합니다.