物理計劃是Spark和Sparksql相對比而言的,由於SparkSql是在Spark core上的一個抽象,物理化就是變成RDD,是SparkSql和Spark core之間的銜接點。sql
Physical Plan也是Catalyst變成Spark做業的最後一個階段。大數據
從代碼,咱們能夠看到SparkPlan的生成包含了兩個步驟,首先會調用SparkPlanner的plan方法,生成SparkPlan,調用prepareForExecution的execute方法,再進行一次加工。ui
SparkPlanner繼承自SparkStrategies,strategies是精髓。spa
其執行在下面的plan方法,全部的strategies應用在plan上獲得的physicalPlan,這個方法返回一個Iterator。繼承
而在prepareForExecution中,咱們看到只是定了兩個規則,主要是執行計劃進行修正。
其中EnsureRequirements主要針對shuffle操做,確保先後的plan分區數兼容。ip
這些操做都是邏輯級別的,sparkplan最終都是調用execute方法生成RDD。rem
DT大數據天天晚上20:00YY頻道現場授課頻道68917580spark