1

如果我有两个查询从同一个表中查询数据,但每个查询都按不同的列分组。那么我应该使用两个单独的查询还是使用该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;
4

1 回答 1

1

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

作为 Hive 0.10 的一部分已经完成了一些改进,因此如果您正在运行其中一个较新版本,您可以尝试一下

于 2013-11-01T18:11:03.580 回答