[英]Spark DAG Number of Stages
在使用spark RDD時,我知道每次我們有ShuffleRDD都會創建一個新舞台,但是當我們有多個動作時會創建一個新舞台嗎?
例:
val rdd1 = sc.textFile("<some_path").keyBy(x=>x.split(",")(1))
val rdd2 = sc.textFile("<some_path").keyBy(x=>x.split(",")(1))
val rdd3 = rdd1.join(rdd2)
rdd3.filter(x=><somecondition1>).saveAsTextFile("location1")
rdd3.filter(x=><somecondition2>).saveAsTextFile("location2")
現在Stage1將具有與rdd1,rdd2和rdd3相關的任務,那么Stage2將同時具有保存操作?
Stage2只有一個保存操作。
在您的代碼中, saveAsTextFile
是一個動作,它將調用spark來計算您的rdd世系。 換句話說,spark只會執行此代碼,直到找到saveAsTextFile
。 然后將創建階段和任務並將其提交給執行者。
由於您的代碼具有兩個saveAsTextFile
並且您從未緩存任何中間的rdds,因此在這種情況下rdd1,rdd2和rdd3將被計算兩次。
階段是Job中的一個概念,一個動作可以調用一個作業,因此,階段中不可能包含兩個動作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.