一、如何选取到 broadcast join
Join 具有 hint 的情况会调用 createBroadcastHashJoin(onlyLookingAtHint = true)
,若 Join 没有 hint 的情况调用 createBroadcastHashJoin(onlyLookingAtHint = false)
二、BroadcastHashJoinExec
执行两个子 relation 的 inner hash join。 构造此运算符的输出 RDD 时,将异步启动一个 Spark 作业来计算 broadcast relation 的值。 然后,此数据将放置在 Spark 广播变量中。 streamed relation 不需要 shuffle。
2.1、执行原理
BroadcastHashJoinExec#doExecute()
2.2、Broadcast Join 物理执行计划及最终执行计划
2.3、broadcast 执行原理
三、ShuffledHashJoinExec
3.1、如何选取到 shuffle hash join
3.2、Shuffle Hash Join 物理执行计划及最终执行计划
3.3、执行原理
ShuffleHashJoinExec#doExecute()