hadoop - 多个插入覆盖到多个表查询在所有临时表中存储相同的结果

标签 hadoop hive

我正在对多个表进行多次 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/

相关文章:

hadoop - 配置单元查询失败:ParseException行无法识别select子句中 '(' 'WITH' 'DATA_SET'附近的输入

hadoop - 集成 Hbase 和 Hive : Register Hbase table

hadoop - 在 webhdfs 中是否有等效的移动

hadoop - 无法在PIG中转储关系

java - JobTracker未运行

hql - 获取 hive 中所有表的行数

java - 是否可以使现有的 mapreduce 程序从输入文件的指定偏移量开始运行

apache-spark - Tez 上的 Hive 在 Spark 2 中不起作用

hadoop - 将不同值的计数放入单行 Hive

python - 将 Python 脚本转换为能够在 Spark/Hadoop 中运行