spark-groupByKey


一般來說,在執行shuffle類的算子的時候,比如groupByKey、reduceByKey、join等。 其實算子內部都會隱式地創建幾個RDD出來。那些隱式創建的RDD,主要是作為這個操作的一些中間數據的表達,以及作為stage划分的邊界。 因為有些隱式生成的RDD,可能是ShuffledRDD,dependency就是ShuffleDependency,DAGScheduler的源碼,就會將這個RDD作為新的stage的第一個rdd,划分出來。

 

groupByKey等shuffle算子,都會創建一些隱式RDD。比如說這里,ShuffledRDD,作為一個shuffle過程中的中間數據的代表。 依賴這個ShuffledRDD創建出來一個新的stage(stage1)。ShuffledRDD會去觸發shuffle read操作。從上游stage的task所在節點,拉取過來相同的key,做進一步的聚合。 對ShuffledRDD中的數據執行一個map類的操作,主要是對每個partition中的數據,都進行一個映射和聚合。這里主要是將每個key對應的數據都聚合到一個Iterator集合中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM