Advertisement

Hive中的Join原理与机制

阅读量:

在Hive系统中, Joins主要分为两种类型: 一种是Common Joins, 在处理阶段完成关联操作; 另一种是Map Joins, 在映射阶段执行联结任务. 本文旨在简要阐述这两种Joins的工作原理及实现机制.

Hive Common Join

如果未指定MapJoin且不符合其条件要求,则该Hive解析器将采用Common Join方式处理该操作。即,在Reduce阶段完成该操作。

整个过程包含Map、Shuffle、Reduce阶段。

Map阶段

获取存储在源表中的数据,并将输出结果按照指定的join条件中的字段作为键进行处理;当存在多个相关联字段时,则将所有相关联字段组合作为键。

Map返回的目标字段是经过关联操作后涉及的相关字段;同时,在目标字段中还附加了表相关的标识信息以明确该值对应的关联对象。

按照key进行排序

Shuffle阶段

依据键值进行哈希运算,并将键值对按照哈希值分配到不同的reducer中。从而保证两个表中的相同键会被分配到同一个reducer中。

Reduce阶段

根据key的值完成join操作,期间通过Tag来识别不同表中的数据。

以下面的HQL为例,图解其过程:

SELECT

a.id,a.dept,b.age

FROM a join b

ON (a.id = b.id);

![

全部评论 (0)

还没有任何评论哟~