假设 A join B on A.a=B.a
,并且它们都是大表。Hive 会通过 common join 来处理这个 join 操作。执行图(由 facebook 提供):
但是我对这张图感到困惑,只有减速机吗?
据我了解,地图输出键是table_name_tag_prefix+join_key
. 但是在分区阶段,它仍然使用 join_key 对记录进行分区。在reduce阶段,每个reducer读取<join_key,value>
具有相同join key的,reducer不需要读取所有的map split。