我正在对多个表进行多次 INSERT OVERWRITE 查询,以便扫描 数据集只有 1 次,我最终得到了所有这些具有相同内容的表格!它似乎 返回结果的 GROUP BY 查询正在覆盖所有临时表。
这是错误的查询:
FROM nikon
INSERT OVERWRITE TABLE e1
SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Impressions
WHERE qs_cs_s_cat='PRINT' GROUP BY qs_cs_s_aid
INSERT OVERWRITE TABLE e2
SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Vues
WHERE qs_cs_s_cat='VIEW' GROUP BY qs_cs_s_aid
;
它只启动一个 MR 作业,结果如下。为什么表 'e1' 包含结果 来自表'e2'?!表 'e1' 应该是空的(请参阅下面的各个 SELECT)
hive> SELECT * from e1;
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 0.229 seconds
hive> SELECT * from e2;
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 0.11 seconds
这是对个别查询的结果(只有第二个查询返回结果集):
hive> SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Impressions FROM nikon
WHERE qs_cs_s_cat='PRINT' GROUP BY qs_cs_s_aid;
(...)
OK
<- There are no results, this is normal
Time taken: 41.471 seconds
hive> SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Vues FROM nikon
WHERE qs_cs_s_cat='VIEW' GROUP BY qs_cs_s_aid;
(...)
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 39.607 seconds
最佳答案
我创建的 jira 问题 HIVE-3699 已修复。补丁在那里可用,应该与 hive-0.11 合并。 Cloudera 4.2-rc 包含补丁
关于hadoop - 多个插入覆盖到多个表查询在所有临时表中存储相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289436/