[本文2400字左右,预计阅读需要15-20分钟] 在之前的文章《从零开始学习大数据系列(五十九)Hive的SELECT查询》中已经介绍了下Hive中的Select查询的基本操作。那么当我们查询的数据存放在不同的表中,关联查询就派上用场了。所谓关联查询,一般就是通过使用相同的字段值来组合多张表的字段类似于SQL中的JOIN,同时查询多张表的记录,下面我们来了解下Hive中的关联查询JOIN的操作。
Hive中Join的原理和机制
Hive中的JOIN可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。Hive Common Join
Common join又称为reduce join或shuffle join在Reduce 阶段完成。如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会默认把执行Common Join,即在Reduce阶段完成join。整个过程包含Map、Shuffle、Reduce阶段。Map阶段
Shuffle 阶段
Reduce 阶段
SELECT a.id,a.dept,b.age FROM a join b ON (a.id = b.id);
Hive Map Join
Map join在Map阶段完成,没有Shuffle和Reduce阶段。Map join简单来说就是:当连接两个表一个是较小的表,一个是大表时。把较小的表放到内存中去,然后再对比较大的表进行map操作。每当扫描一个大表中的数据时,就去小表中查找是否有符合条件的