2015-04-22 37 views
1

我是火星中的新手我想了解一些關於它如何在幕後工作的基本機制。 我重視我的RDD的血統,我有以下問題:執行階段內部的任務和執行階段的任務的火花順序

  1. 爲什麼我有8個階段,而不是5?從「學習Spark」一書(第8章http://bit.ly/1E0Hah7)中,我可以理解:「與其父母 父母相同的縮進級別的RDD將在物理執行期間流水線化[進入同一物理階段]。由於我有5位父母,我預計會有5個階段。 Spark UI階段視圖仍然顯示8個階段。 什麼代表(8)在調試字符串中表示?這個函數有沒有錯誤?
  2. 在階段級別,任務之間的執行順序是什麼?

它們可以執行所有這些並行

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 [] 
    
    +1

    如果你包含實際的代碼,這將更容易解釋。 –

    +0

    ZipWithIndex方法開始一個新的工作和一個新的階段。由於我有2個zipWithIndex方法調用,我會得到2個額外的階段。此外,sortByKey方法啓動一個新的工作,所以我又得到了一個額外的階段。所以我有8個階段。問題2和3的答案不取決於我的代碼。它們的核心應該是火花執行框架。但是我找不到有關這些主題的任何文檔。 – florins

    回答

    0

    (8)表示的RDD分區的#。 關於第3點,你的假設是正確的。一旦屬於一個階段的所有任務完成,那麼下一個階段的任務開始