原理:
問題點
1、參數設置:
spark.sql.adaptive.join.enabled
|
AE 相關,開啓後能夠根據數據量自動判斷能否將 sortMergeJoin 轉換成 broadcast join |
true |
spark.sql.broadcastTimeout |
broadcast joins 時,廣播數據最長等待時間,網絡不穩定時,容易出現超時造成任務失敗,可適當增大此參數 |
300(單位:s) |
spark.sql.autoBroadcastJoinThreshold |
表能夠使用 broadcast join 的最大閾值
|
20971520(20MB) |
2、當廣播變量的表爲1G,但是子查詢之後爲1M,這樣還能廣播出去嗎?(sortMergeJoin 轉換成 broadcast join)
B表爲1G,但是篩選之後爲1M。
答案:不能。
select
a.id,
ss.name
from
A
left join
(
select
id,
name
from
B
where
id < 100
) s
on a.id = ss.id
驗證一下。抽時間再補上。