Spark Join的分类和实现机制

spark代码Broadcast优化机制_数据


Broadcast Hash Join

当Join的一张表很小的时候,使用broadcast hash join。 Broadcast Hash Join的条件有以下几个:

被广播的表需要小于spark.sql.autoBroadcastJoinThreshold所配置的信息,默认是10M;基表不能被广播,比如left outer join时,只能广播右表。

spark代码Broadcast优化机制_sql_02


broadcast hash join可以分为两步:

broadcast阶段:将小表广播到所有的executor上,广播的算法有很多,最简单的是先发给driver,driver再统一分发给所有的executor,要不就是基于bittorrete的p2p思路;

hash join阶段:在每个executor上执行 hash join,小表构建为hash table,大表的分区数据匹配hash table中的数据。