Hive联盟所有表现

时间:2013-11-01 17:12:49

标签: hadoop hive union-all

如果我有两个查询从同一个表查询数据,但每个组按不同的列查询。那我应该使用两个单独的查询或使用union all函数?我关心的是表现。因为有些人说如果没有必要,应该避免union all,否则这是一个很大的开销。

例如,我应该使用UNION ALL进行以下查询吗?请指教。感谢。

INSERT INTO TABLE newtable
SELECT SUBSTRING(A1, 1, 7) AS col1, COUNT(DISTINCT B) AS col2, C AS col3
FROM oldtable
GROUP BY SUBSTRING(A1, 1, 7), C;

INSERT INTO TABLE newtable
SELECT A2 AS col1, COUNT(DISTINCT B) AS col2, C AS col3
FROM oldtable
GROUP BY A2, C;

1 个答案:

答案 0 :(得分:1)

假设你有一个UNION ALL,其父母是2个MapReduce工作。 每个MapReduce作业都会将其输出写入临时文件,然后UNION将读取这些临时文件并写入最终存储。因此,您可以看到它非常浪费,因为您最终会阅读并写两次结果!

some improvements作为Hive 0.10的一部分已经完成,所以如果您正在运行其中一个较新的版本,可以尝试一下。

相关问题