Spark SQL數據傾斜解決方案

由於Spark都是基於RDD的特性,所以可以用純RDD的方法,實現和Spark SQL一模一樣的功能。

之前在Spark Core中的數據傾斜的七種解決方案,全部都可以直接套用在Spark SQL上。

Spark SQL的數據傾斜解決方案:

  1. 聚合源數據:Spark Core和Spark SQL沒有任何區別
  2. 過濾導致傾斜的key:在sql中用where條件
  3. 提高shuffle並行度:groupByKey(1000),spark.sql.shuffle.partitions(默認是200)
  4. 雙重groupBy:改寫SQL,兩次groupBy
  5. reduce join轉換爲map join:spark.sql.autoBroadcastJoinThreshold(默認是10485760);可以自己將表做成RDD,自己手動去實現map join;SparkSQL內置的map join,默認如果有一個10M以內的小表,會將該表進行broadcast,然後執行map join;調節這個閾值,比如調節到20M、50M、甚至1G。
  6. 採樣傾斜key並單獨進行join:純Spark Core的一種方式,sample、filter等算子
  7. 隨機key與擴容表:Spark SQL+Spark Core

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章