Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 星火舞台的细节_Scala_Hadoop_Apache Spark_Spark Dataframe_Rdd - Fatal编程技术网

Scala 星火舞台的细节

Scala 星火舞台的细节,scala,hadoop,apache-spark,spark-dataframe,rdd,Scala,Hadoop,Apache Spark,Spark Dataframe,Rdd,我正在尝试使用sparkshell将DataFrame保存为HDFS中的文本文件 scala> finalDataFrame.rdd.saveAsTextFile(targetFile) 执行上述代码后,我发现spark在内部使用stage进行一些工作 [第13阶段:===============================>(119)+ 8) //200] 我试图了解这个过程的基本细节。但我们不能这样做。 我的问题是—— 什么是第13阶段 什么是(119+8)/200 [第18阶段

我正在尝试使用
sparkshell
DataFrame
保存为
HDFS
中的文本文件

scala> finalDataFrame.rdd.saveAsTextFile(targetFile)
执行上述代码后,我发现spark在内部使用stage进行一些工作

[第13阶段:===============================>(119)+ 8) //200]

我试图了解这个过程的基本细节。但我们不能这样做。 我的问题是——

  • 什么是第13阶段
  • 什么是(119+8)/200
  • [第18阶段:==========>(199+1)/200][第27阶段:==========>(173)+ 3) //200]

  • 这句话的意思是什么
  • 以前只有一个阶段是有效的,但在这里我可以发现两个阶段是有效的。因此,当多个阶段并行工作时
  • [第13阶段:============================>(119+8)/200]

  • 第13阶段是什么
  • 每个Spark作业都分为几个阶段。本例中的作业是将数据帧保存为文本文件,“阶段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同时运行。代码将显示限制为三个同时运行的任务。

    感谢您的解释。你能告诉我Spark是如何将一项工作内部划分为多个阶段和多个任务的吗。Spark如何决定阶段和任务的数量。