hive

Hive笔记5-join原理和机制

2017-05-16  本文已影响168人  raincoffee

hive中join原理与机制

笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。本文简单介绍一下两种join的原理和机制。

Hive Common Join

如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join.
整个过程包含Map、Shuffle、Reduce阶段。

SELECT 
 a.id,a.dept,b.age 
FROM a join b 
ON (a.id = b.id);

看了这个图,应该知道如何使用MapReduce进行join操作了吧。

Hive Map Join

MapJoin通常用于一个很小的表和一个大表进行join的场景,具体小表有多小,由参数hive.mapjoin.smalltable.filesize来决定,该参数表示小表的总大小,默认值为25000000字节,即25M。
Hive0.7之前,需要使用hint提示 /+ mapjoin(table) /才会执行MapJoin,否则执行Common Join,但在0.7版本之后,默认自动会转换Map Join,由参数hive.auto.convert.join**来控制,默认为true.
仍然以9.1中的HQL来说吧,假设a表为一张大表,b为小表,并且hive.auto.convert.join=true,那么Hive在执行时候会自动转化为MapJoin。

key value
1 26
2 34

hive中join的类型和用法

Hive Join 只返回关联上的记录

Hive LEFT|RIGTH|FULL OUTER JOIN

Hive LEFT SEMI JOIN 只返回a中载b中能关联到的记录

Hive Cross Join 笛卡尔积 不需要制定关联列

上一篇 下一篇

猜你喜欢

热点阅读