Apache spark 阶段内任务的执行顺序和阶段的执行顺序

Apache spark 阶段内任务的执行顺序和阶段的执行顺序,apache-spark,Apache Spark,我是spark的新手,我想了解一些关于它在幕后工作的基本机制。 我已附上我的RDD血统,我有以下问题: 为什么我有8个阶段而不是5个阶段?从《从Spark学习》(第8章)一书中,我可以理解“RDD与它们的 在实际执行过程中,父母将通过管道[进入同一物理阶段]。因为我有5个父母,所以我应该有5个阶段。仍然是Spark UI阶段视图,显示了8个阶段。 还有,什么表示调试字符串中表示的(8)?这个函数中有任何错误吗 在阶段级别,任务之间的执行顺序是什么 它们可以并行执行 HadoopRDD[0] ||

我是spark的新手,我想了解一些关于它在幕后工作的基本机制。 我已附上我的RDD血统,我有以下问题:

  • 为什么我有8个阶段而不是5个阶段?从《从Spark学习》(第8章)一书中,我可以理解“RDD与它们的 在实际执行过程中,父母将通过管道[进入同一物理阶段]。因为我有5个父母,所以我应该有5个阶段。仍然是Spark UI阶段视图,显示了8个阶段。 还有,什么表示调试字符串中表示的(8)?这个函数中有任何错误吗
  • 在阶段级别,任务之间的执行顺序是什么 它们可以并行执行

    HadoopRDD[0] || MappedRDD[1] || MapPartitionsRDD[4] || ZippedWithIndexRDD[6]
    
    或者他们在等待每一项任务的完成

    HadoopRDD[0]=>completed=>MappedRDD[1]=>completed=>etc ?
    
  • 在各个阶段之间,执行计划给出了顺序,因此每个阶段都在等待之前的阶段完成。这是正确的假设吗
  • 我期待你的回答

    问候,, 弗洛林

    (8) 表示rdd中分区的#。
    关于第3点,您的假设是正确的。一旦属于某个阶段的所有任务都完成,然后才开始下一个阶段的任务

    如果您包含实际的代码,则更容易解释。ZipWithIndex方法启动新作业和新阶段。因为我有2个zipWithIndex方法调用,所以我将得到2个额外的阶段。另外,sortByKey方法用一个阶段开始一个新的工作,所以我得到了另一个额外的阶段。因此我有8个阶段。问题2和3的答案不取决于我的代码。spark执行框架的核心应该涵盖这些内容。但我找不到关于这些主题的任何文件。
    (8) MappedRDD[21] at map at WAChunkSepvgFilterNewModel.scala:298 []
     |  MappedRDD[20] at map at WAChunkSepvgFilterNewModel.scala:182 []
     |  ShuffledRDD[19] at sortByKey at WAChunkSepvgFilterNewModel.scala:182 []
     +-(8) ShuffledRDD[16] at aggregateByKey at WAChunkSepvgFilterNewModel.scala:182 []
        +-(8) FlatMappedRDD[15] at flatMap at WAChunkSepvgFilterNewModel.scala:174 []
           |  ZippedWithIndexRDD[14] at zipWithIndex at WAChunkSepvgFilterNewModel.scala:174 []
           |  MappedRDD[13] at map at WAChunkSepvgFilterNewModel.scala:272 []
           |  MappedRDD[12] at map at WAChunkSepvgFilterNewModel.scala:161 []
           |  ShuffledRDD[11] at sortByKey at WAChunkSepvgFilterNewModel.scala:161 []
           +-(8) ShuffledRDD[8] at aggregateByKey at WAChunkSepvgFilterNewModel.scala:161 []
              +-(8) FlatMappedRDD[7] at flatMap at WAChunkSepvgFilterNewModel.scala:153 []
                 |  ZippedWithIndexRDD[6] at zipWithIndex at WAChunkSepvgFilterNewModel.scala:153 []
                 |  MappedRDD[5] at map at WAChunkSepvgFilterNewModel.scala:248 []
                 |  MapPartitionsRDD[4] at mapPartitionsWithIndex at WAChunkSepvgFilterNewModel.scala:114 []
                 |  test4spark.csv MappedRDD[1] at textFile at WAChunkSepvgFilterNewModel.scala:215 []
                 |  test4spark.csv HadoopRDD[0] at textFile at WAChunkSepvgFilterNewModel.scala:215 []