【已解决】关于Bucket shuffle join文档疑问

Viewed 44

文档原文:

Broadcast Join: 如果根据数据分布,查询规划出A表有3个执行的HashJoinNode,那么需要将B表全量的发送到3个HashJoinNode,那么它的网络开销是3B,它的内存开销也是3B。
Shuffle Join: Shuffle Join会将A,B两张表的数据根据哈希计算分散到集群的节点之中,所以它的网络开销为 A + B,内存开销为B。
.....
Bucket Shuffle Join开销如下:

网络开销: B < min(3B, A + B)
内存开销: B <= min(3B, B)

疑问:

Shuffle join这里的内存开销是怎么来的,有点太让人费解了,我能想到唯一的解释是因为Shuffle join只能支持Hash Join算子是因为Hash join带来的开销。(但这个本身就不应该在这里算进来)

1 Answers

基于b构建hash表 然后去scan a 实现hash join
b的数据shuffle打散了,每个机器上一部分hash表 加起来B