Trong spark-shell của tôi, các mục nhập như bên dưới có ý nghĩa gì khi tôi thực thi một hàm?
[Stage7:===========> (14174 + 5) / 62500]
Trong spark-shell của tôi, các mục nhập như bên dưới có ý nghĩa gì khi tôi thực thi một hàm?
[Stage7:===========> (14174 + 5) / 62500]
Câu trả lời:
Những gì bạn nhận được là một Console Progress Bar
,
[Stage 7:
cho thấy giai đoạn bạn đang ở hiện tại và
(14174 + 5) / 62500]
hiện tại (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
. Thanh tiến trình hiển thị numCompletedTasks
/ totalNumOfTasksInThisStage
.
Nó sẽ được hiển thị khi cả hai đều spark.ui.showConsoleProgress
đúng (theo mặc định) và mức đăng nhập conf/log4j.properties
là ERROR
hoặc WARN
( !log.isInfoEnabled
là đúng).
Hãy xem đoạn mã trong ConsoleProgressBar.scala cho thấy điều đó:
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
}
Giả sử bạn thấy như sau (X, A, B, C luôn là các số nguyên không âm):
[Stage X:==========> (A + B) / C]
(ví dụ trong câu hỏi X = 7, A = 14174, B = 5 và C = 62500)
Đây là những gì đang diễn ra ở cấp độ cao: Spark chia nhỏ công việc theo từng giai đoạn và nhiệm vụ trong từng giai đoạn. Chỉ báo tiến độ này có nghĩa là Giai đoạn X bao gồm các nhiệm vụ C. Trong quá trình thực hiện, A và B bắt đầu từ 0 và tiếp tục thay đổi. A luôn là số tác vụ đã hoàn thành và B là số tác vụ hiện đang thực hiện. Đối với một giai đoạn có nhiều nhiệm vụ (nhiều hơn số công nhân bạn có), bạn sẽ thấy B tăng lên một số tương ứng với số công nhân bạn có trong nhóm, sau đó bạn sẽ bắt đầu thấy A tăng lên khi các nhiệm vụ hoàn thành. Về cuối, khi một vài nhiệm vụ cuối cùng thực hiện, B sẽ bắt đầu giảm cho đến khi nó về 0, tại điểm A sẽ bằng C, giai đoạn đã hoàn thành và tia lửa chuyển sang giai đoạn tiếp theo. C sẽ không đổi trong toàn bộ thời gian, hãy nhớ nó là tổng số nhiệm vụ trong giai đoạn và không bao giờ thay đổi.
====> hiển thị phần trăm công việc được thực hiện dựa trên những gì tôi đã mô tả ở trên. Lúc đầu, dấu> sẽ hướng về bên trái và sẽ di chuyển sang phải khi các nhiệm vụ được hoàn thành.