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