Hive之多表连接

注意:连接 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总是按照从左到右的顺序执行的。

猜你喜欢

转载自blog.csdn.net/qq_43193797/article/details/86422288