set spark.sql.shuffle.partitions=2;
set spark.sql.adaptive.enabled=true;
set spark.sql.adaptive.shuffle.targetpostshuffleinputsize=268435456;
insert overwrite table table_name partition(stat_dt) select * from source_table_name where stat_dt='20160701' distribute by id;
spark.sql.shuffle.partitions :設定的是rdd1做shuffle處理後生成的結果rdd2的分割槽數,乙個作業一旦設定了該引數,它執行過程中的所有階段的reduce個數都是同乙個值。預設值: 200。為了發揮集群效率,一般建議設定初始分割槽的1.5-2倍之間。這裡為了使結果分割槽數變少,設定得較小。
spark.sql.adaptive.enabled :自適應執行框架的開關。預設false。設定shuffle partition的上下限區間,在這個區間內對不同作業不同階段的reduce個數進行動態調整。通過區間的設定,一方面可以大大減少調優的成本(不需要找到乙個固定值),另一方面同乙個作業內部不同reduce階段的reduce個數也能動態調整。
spark.sql.adaptive.minnumpostshufflepartitions 預設為1 reduce個數區間最小值
spark.sql.adaptive.maxnumpostshufflepartitions 預設為500 reduce個數區間最大值
spark.sql.adaptive.shuffle.targetpostshuffleinputsize 預設為67108864 動態調整reduce個數的partition大小依據,如設定64mb則reduce階段每個task最少處理64mb的資料
spark.sql.adaptive.shuffle.targetpostshufflerowcount 預設為20000000 動態調整reduce個數的partition條數依據,如設定20000000則reduce階段每個task最少處理20000000條的資料
spark.sql.adaptive.shuffle.targetpostshuffleinputsize :該引數是用於開啟spark的自適應執行,這是spark比較老版本的自適應執行,後面的targetpostshuffleinputsize是用於控制之後的shuffle 階段的平均輸入資料大小,防止產生過多的task
Spark Sql 小檔案問題
參考 使用spark sql apis 處理資料容易產生生成大量小檔案,小檔案問題也是在分布式計算中常見的問題。一般有三種方法來處理這類問題 spark.sql.shuffle.partitions 引數通過在處理joins 或 aggregations 等shuffle操作來控制輸出的分割槽數。可...
SparkSQL將小檔案合併
1 設定配置 spark.sql set hive.exec.dynamic.partition true spark.sql set hive.exec.dynamic.partition.mode nonstrict spark.sql set spark.sql.shuffle.partiti...
spark sql 集群小檔案太多解決方式
某張表有三個分割槽字段 partition brand,partition date,partition rssc 則生成小檔案個數 2 26 8 200 83,200 這個表還算一般,如果按照年月日進行分割槽的話,小檔案就太多了 先檢視集群動態資源配置 再檢視執行spark程式配置資源 drive...