一.簡介
Pipeline管道計算模式:只是一種計算思想,在數據處理的整個流程中,就想水從管道流過一下,是順序執行的。
二.特點
1.數據一直在管道中,只有在對RDD進行持久化【cache,persist...】或shuffle write時才會落地。
2.管道中的處理也是懶加載的,只有遇到action算子之后才會執行。
三.代碼驗證
package big.data.analyse.scala.pipeline import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.SparkSession /** * Created by zhen on 2019/4/4. */ object RDDPipelineAnalyse { Logger.getLogger("org").setLevel(Level.INFO) // 設置日志級別 def main(args: Array[String]) { val spark = SparkSession.builder().appName("檢測spark數據處理pipeline") .master("local[2]").getOrCreate() val sc = spark.sparkContext val rdd = sc.parallelize(Array(1,2,3,4,5,6)) println("rdd partition size : " + rdd.partitions.length) val rdd1 = rdd.map{ x => { println("map--------"+x) x * 10 }} val rdd2 = rdd1.filter{ x => { println("fliter========"+x) true } } rdd2.collect() sc.stop() } }
四.執行結果
五.分析
管道處理是先進先出的,也就是先進先執行,這只對具體到每條數據而言,不同條數據的執行先后沒有固定的順序。
因此不能根據原始數據的順序確定處理的順序。