1. 程式人生 > >Stage

Stage

Stage
Spark任務會根據RDD之間的依賴關係,形成一個DAG有向無環圖,DAG會提交給DAGScheduler,DAGScheduler會把DAG劃分相互依賴的多個stage,劃分stage的依據就是RDD之間的寬窄依賴。遇到寬依賴就劃分stage,每個stage包含一個或多個task任務。然後將這些task以taskSet的形式提交給TaskScheduler執行。
stage是由一組並行的task組成。
stage切割規則
切割規則:從後往前,遇到寬依賴就切割stage。
在這裡插入圖片描述
stage計算模式
pipeline管道計算模式,pipeline只是一種計算思想,模式。
在這裡插入圖片描述
資料一直在管道里面什麼時候資料會落地?
1.對RDD進行持久化。
2.shuffle write的時候。
Stage的task並行度是由stage的最後一個RDD的分割槽數來決定的 。
如何改變RDD的分割槽數?
例如:reduceByKey(XXX,3),GroupByKey(4)
測試驗證pipeline計算模式
val conf = new SparkConf()
conf.setMaster(“local”).setAppName(“pipeline”);
val sc = new SparkContext(conf)
val rdd = sc.parallelize(Array(1,2,3,4))
val rdd1 = rdd.map { x => {
println(“map--------”+x)
x
}}
val rdd2 = rdd1.filter { x => {
println(“fliter********”+x)
true
} }
rdd2.collect()
sc.stop()