मेरे स्पार्क-शेल में, जब मैं किसी फ़ंक्शन को निष्पादित करता हूं तो नीचे की तरह प्रविष्टियां क्या होती हैं?
[Stage7:===========> (14174 + 5) / 62500]
मेरे स्पार्क-शेल में, जब मैं किसी फ़ंक्शन को निष्पादित करता हूं तो नीचे की तरह प्रविष्टियां क्या होती हैं?
[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
}
मान लें कि आप निम्नलिखित देखते हैं (एक्स, ए, बी, सी हमेशा गैर नकारात्मक पूर्णांक हैं):
[Stage X:==========> (A + B) / C]
(उदाहरण के लिए X = 7, A = 14174, B = 5 और C = 62500)
यहाँ वह है जो उच्च स्तर पर चल रहा है: स्पार्क प्रत्येक चरण में चरणों और कार्यों में कार्य को तोड़ता है। यह प्रगति संकेतक का अर्थ है कि स्टेज एक्स सी कार्यों से युक्त है। निष्पादन के दौरान, ए और बी शून्य पर शुरू होते हैं और बदलते रहते हैं। A हमेशा समाप्त होने वाले कार्यों की संख्या है और B वर्तमान में निष्पादित होने वाले कार्यों की संख्या है। कई कार्यों के साथ एक चरण के लिए (जिस तरह से आपके पास श्रमिकों की तुलना में अधिक है) आपको बी को एक संख्या में बढ़ने की उम्मीद करनी चाहिए जो क्लस्टर में आपके पास कितने श्रमिकों से मेल खाती है, तो आपको ए के कार्यों को पूरा होने के रूप में देखना शुरू करना चाहिए। अंत में, अंतिम कुछ कार्यों के निष्पादन के रूप में, बी तब तक घटने लगेगा जब तक कि यह 0 तक नहीं पहुंच जाता है, जिस बिंदु पर A को C के बराबर होना चाहिए, चरण पूरा हो गया है, और स्पार्क अगले चरण में चला जाता है। सी पूरे समय के दौरान स्थिर रहेगा, याद रखें कि यह चरण में कुल कार्यों की संख्या है और कभी नहीं बदलता है।
====> जो मैंने ऊपर वर्णित किया है उसके आधार पर किए गए कार्य का प्रतिशत दर्शाता है। शुरुआत में> बाईं ओर होगा और कार्य पूरा होते ही दाईं ओर जा रहा होगा।