Spark Join 源码剖析② - BroadcastHashJoinExec & ShuffledHashJoinExec

一、如何选取到 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()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容