spark舞台细节

ny6fqffe  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(357)

我想救你 DataFrame 作为中的文本文件 HDFS 使用 spark-shell .

scala> finalDataFrame.rdd.saveAsTextFile(targetFile)

在执行上述代码之后,我发现spark在内部使用stage做一些工作。
[第13阶段:===============================>(119+8)/200]
我试图了解这个过程的基本细节。但不能这么做。我的问题是-
第13阶段是什么?
什么是(119+8)/200?
[第18阶段:=============>(199+1)/200][第27阶段:=============>(173+3)/200]
这条线是什么意思。
以前只有一个阶段是工作的,但在这里我可以发现两个阶段正在工作。因此,当多个阶段并行工作时?

00jrzges

00jrzges1#

[第13阶段:===============================>(119+8)/200]
第13阶段是什么?
每个spark作业都分为几个阶段。本例中的作业是将Dataframe保存为文本文件,“阶段13”是该作业的多个阶段之一。
什么是(119+8)/200?
检查源代码有助于回答以下问题:

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]
这条线是什么意思。
以前只有一个阶段是工作的,但在这里我可以发现两个阶段正在工作。因此,当多个阶段并行工作时?
同样,查看源代码(这里和这里)很有用:

/**...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同时运行。代码将显示限制为同时运行三个任务。

相关问题