注意:连接 n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。
数据准备location.txt
1700 Beijing
1800 London
1900 Tokyo
1.创建位置表
|
create table if not exists default.location( loc int, loc_name string ) row format delimited fields terminated by '\t'; |
2.导入数据
hive (default)> load data local inpath '/opt/module/datas/location.txt' into table default.location;
3.多表连接查询
hive (default)>SELECT e.ename, d.deptno, l. loc_name
FROM emp e
JOIN dept d
ON d.deptno = e.deptno
JOIN location l
ON d.loc = l.loc;
大多数情况下,Hive会对每对JOIN连接对象启动一个MapReduce任务。本例中会首先启动一个MapReduce job对表e和表d进行连接操作,然后会再启动一个MapReduce job将第一个MapReduce job的输出和表l;进行连接操作。
注意:为什么不是表d和表l先进行连接操作呢?这是因为Hive总是按照从左到右的顺序执行的。
本文详细介绍了在Hive SQL中如何进行多表连接查询,包括数据准备、表的创建与数据导入过程,以及通过具体示例展示了连接多个表时连接条件的重要性。文章指出,连接n个表至少需要n-1个连接条件,并解释了Hive执行连接操作的顺序。

5501

被折叠的 条评论
为什么被折叠?



