文档原文:
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带来的开销。(但这个本身就不应该在这里算进来)