1.spark.default.parrallelism
2.textFile()傳入第二個參數,指定partition數量面試
好比:你的第一個stage,用spark sql從hive表中查詢了一些數據,而後作了一些transformation操做,接着作了一個shuffle操做(例如groupByKey);下一個stage,在stage以後,作了一些transformation操做。
hive表,對應了一個hdfs文件,有20個block;你本身設置了spark.default.parallelish參數爲100;
你的第一個stage的並行度,是不受你設置的參數控制的,就只有20task;第二個stage的並行度,纔是你本身設置的100;
這樣會產生的問題就是:在第一個stage中,可能有很是複雜的業務邏輯或者算法,若是隻有默認的20個並行度的話,每一個task要處理很大的數據量,這就會致使第一個stage執行的速度特別慢。而第二個就很快。算法
dataFrame.repartition(10)sql
dataFrame.repartition($"name")大數據
dataFrame.repartition(100,$"name")優化
專爲大數據面試而生spa
一系列的spark,flink優化文章在等你呢~orm