Spark Join的分类和实现机制
Broadcast Hash Join
当Join的一张表很小的时候,使用broadcast hash join。 Broadcast Hash Join的条件有以下几个:
被广播的表需要小于spark.sql.autoBroadcastJoinThreshold所配置的信息,默认是10M;
基表不能被广播,比如left outer join时,只能广播右表。
broadcast hash join可以分为两步:
broadcast阶段:将小表广播到所有的executor上,广播的算法有很多,最简单的是先发给driver,driver再统一分发给所有的executor,要不就是基于bittorrete的p2p思路;
hash join阶段:在每个executor上执行 hash join,小表构建为hash table,大表的分区数据匹配hash table中的数据。