标签:htable 最好 ast shuf 根据 哈希 build uil 计时
适合情况,小表和大表,小表非常小,适合传播到各个节点。
当大表小表连接时,为了避免Shuffle,我们可以将小表广播到各个节点内存,供大表连接。一定程度上牺牲了空间,避免了Shuffle。这种Join在Spark中称作Broadcast Join。(需要注意的点是广播的只能是小表)
适合情况,大表和小表,小表数据量增大,广播消耗资源大,按照join key进行分区,key相同分区也一定相同。大表分区,最后将两个表的数据进行hash join。
对两张表分别按照join keys进行重分区,即shuffle,目的是为了让有相同join keys值的记录分到对应的分区中。对对应分区中的数据进行join,此处先将小表分区构造为一张hash表,然后根据大表分区中记录的join keys值拿出来进行匹配。
Broadcast Join和Shuffle Hash Join都是HashJoin。只不过在hash join之前需要先shuffle还是先broadcast。
适合情况,大表和大表。
共有三步:
数据仓库设计时最好避免大表与大表的join查询
标签:htable 最好 ast shuf 根据 哈希 build uil 计时
原文地址:https://www.cnblogs.com/chenshaowei/p/13187773.html