HIVE中的多重插入覆盖

时间:2013-03-20 23:01:29

标签: hive hiveql

我正在尝试通过以下命令在Hive中进行多次插入覆盖。

INSERT OVERWRITE  table results_3 SELECT NULL, res, NULL, NULL FROM results where field= 'title';

第一个命令后的results_3表的内容

NULL    Up On Cripple Creek (2000 Digital Remaster) NULL    NULL
NULL    The Weight (2000 Digital Remaster)  NULL    NULL
NULL    Rhythm Of The Rain (LP Version) NULL    NULL
NULL    Who'll Stop the Rain    NULL    NULL
NULL    I Walk the Line NULL    NULL
NULL    Against The Wind    NULL    NULL
NULL    Lyin' Eyes  NULL    NULL
NULL    North To Alaska NULL    NULL
NULL    You Gave Me A Mountain  NULL    NULL
NULL    Night Moves NULL    NULL


INSERT OVERWRITE  table results_3 SELECT NULL, NULL, res, NULL FROM results where field= 'albums';

第二个命令后的results_3表的内容

NULL    NULL    The Band    NULL
NULL    NULL    The Band    NULL
NULL    NULL    The Cascades    NULL
NULL    NULL    Creedence Clearwater Revival    NULL
NULL    NULL    Johnny Cash NULL
NULL    NULL    Bob Seger   NULL
NULL    NULL    The Eagles  NULL
NULL    NULL    Johnny Horton   NULL
NULL    NULL    Marty Robbins   NULL
NULL    NULL    Bob Seger   NULL

但我想把这两件事合并在一起。你知道我怎么解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:2)

你可以这样方式追加:

INSERT OVERWRITE TABLE
select col1 ... col2 
from 
(
SELECT col1 ... coln from TABLE  --old data
UNION ALL
SELECT col1 ... col2n from TABLE2 --new data
)

答案 1 :(得分:0)

Hive insert目前不支持追加。

一种简单的方法:insert overwrite两个目录。手动合并。 要么 insert into一个具有不同分区的表(但实际上不同的分区有不同的目录)。

请参阅hive wiki了解更多信息。