1
我是火星中的新手我想了解一些關於它如何在幕後工作的基本機制。 我重視我的RDD的血統,我有以下問題:執行階段內部的任務和執行階段的任務的火花順序
- 爲什麼我有8個階段,而不是5?從「學習Spark」一書(第8章http://bit.ly/1E0Hah7)中,我可以理解:「與其父母 父母相同的縮進級別的RDD將在物理執行期間流水線化[進入同一物理階段]。由於我有5位父母,我預計會有5個階段。 Spark UI階段視圖仍然顯示8個階段。 什麼代表(8)在調試字符串中表示?這個函數有沒有錯誤?
- 在階段級別,任務之間的執行順序是什麼?
它們可以執行所有這些並行
HadoopRDD[0] || MappedRDD[1] || MapPartitionsRDD[4] || ZippedWithIndexRDD[6]
或它們在另一個上等待每個任務完成
HadoopRDD[0]=>completed=>MappedRDD[1]=>completed=>etc ?
- 之間階段,順序由執行計劃給出,所以每個階段都在等待,直到完成之前。這是一個正確的假設嗎?
我期待您的回答。
問候, 林
(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 []
如果你包含實際的代碼,這將更容易解釋。 –
ZipWithIndex方法開始一個新的工作和一個新的階段。由於我有2個zipWithIndex方法調用,我會得到2個額外的階段。此外,sortByKey方法啓動一個新的工作,所以我又得到了一個額外的階段。所以我有8個階段。問題2和3的答案不取決於我的代碼。它們的核心應該是火花執行框架。但是我找不到有關這些主題的任何文檔。 – florins