我正在尝试使用DataFrame
将HDFS
保存为spark-shell
中的文本文件。
scala> finalDataFrame.rdd.saveAsTextFile(targetFile)
执行上面的代码后,我发现内部使用阶段做了一些工作。
[第13阶段:================================> (119 + 8)/ 200]
我想了解这个过程的基本细节。但是不能这样做。 我的问题是 -
[第18阶段:=============>(199 + 1)/ 200] [第27阶段:============> (173 + 3)/ 200]
答案 0 :(得分:6)
[第13阶段:================================> (119 + 8)/ 200]
- 第13阶段是什么?
醇>
每个Spark工作分为几个阶段。在这种情况下的工作是将DataFrame保存为文本文件,并且"阶段13"是这项工作的多个阶段之一。
- 什么是(119 + 8)/ 200?
醇>
检查source code可以帮助解答这个问题:
val bar = stages.map { s =>
val total = s.numTasks()
val header = s"[Stage ${s.stageId()}:"
val tailer = s"(${s.numCompletedTasks()} + ${s.numActiveTasks()}) / $total]"
...
}.mkString("")
每个阶段分为任务。 119
是此阶段已完成任务的数量(即阶段13),8
是此阶段的活动任务数,200
是此阶段的任务总数阶段。
[第18阶段:=============>(199 + 1)/ 200] [第27阶段:============> (173 + 3)/ 200]
- 这条线的含义是什么。
- 以前只有1个阶段正在运作,但在这里我可以找到2个阶段正在运作。因此当多个阶段并行工作时?
醇>
/** ...If multiple stages run in the same time, the status
* of them will be combined together, showed in one line.
*/
...
if (stages.length > 0) {
show(now, stages.take(3)) // display at most 3 stages in same time
}
这些阶段同时运行,因此在刷新进度条的时间窗口内,可能正在运行多个阶段。在这种情况下,阶段18和27同时运行。代码将显示限制为三个同时运行的任务。