在Hive中加入连接的多重插入

时间:2018-09-19 15:13:00

标签: join hive insert

根据Apache Hive Wiki(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML), 多重插入“可以减少所需的数据扫描次数。Hive可以通过只扫描一次输入数据(并应用不同的查询运算符)到输入数据来将数据插入到多个表中”。

但是,可以将联接应用于这些多个插入吗?

我之所以问是因为我无法在通用FROM语句中应用联接,因为我需要考虑到每个“第一”表的不同参数来对第二个表的数据进行子集化。

谢谢!

2 个答案:

答案 0 :(得分:0)

应该可能是这样。

from (
select a.*,b* from a inner join b on a.id=b.id2
)
insert ..
insert ..

答案 1 :(得分:0)

是的,您也可以应用加入条件。查询格式如下:

from emp a,emp b
insert into table manager select distinct a.manager_id,a.name where a.id=b.manager_id 
insert into table dept select distinct a.dept_id,a.project_id;

以上查询将对emp表应用自连接,并将提取manager_id和name,然后将其插入manager表中。还将在dept表中插入project_id和dept_id。

简单地说,在查询中使用内部联接也将执行与上述相同的任务:

从emp中将内部连接emp b插入表管理器中,选择不同的a.manager_id,a.name,其中a.id = b.manager_id插入表部中,选择不同的a.dept_id,a.project_id;