作者回复: 满分💯~
作者回复: 取决于是单机join,还是分布式join。单机的话,掌握NLJ、SMJ、HJ三种实现机制即可;分布式join的话,还需要考虑是shuffle join,还是Broadcast join~
作者回复: SMJ同样适用于数据有重复的情况哈,本质上还是靠游标的滑动,基本上还是那3个规则,按照顺序依次往下滑~ 不过,你说的没错,在这种情况下,游标的滑动,需要保证数据的不重不漏~
作者回复: 是的,Join的实现机制,是通用的哈,都是NLJ、HJ和SMJ,这三种
作者回复: 哈哈,是的,Spark SQL的很多优化机制,实际上都来源于RDBMS。实际上,不止Spark SQL,Impala、Presto,任何数仓都是一样的,所谓万变不离其宗~
作者回复: 赞👍,666~ 辛苦老弟整理Python代码,后续我们一起收录起来~
作者回复: 不是哈~ 这里没有O(M)、O(N)这样的“尾巴”,两种情况的复杂度都是O(M*N)
作者回复: 老弟加油~