【问题标题】:Hive union all performanceHive 联合所有性能
【发布时间】:2013-11-01 17:12:48
【问题描述】:

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

【问题讨论】:

    标签: hadoop hive union-all


    【解决方案1】:

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

    some improvements 已作为 Hive 0.10 的一部分完成,因此如果您运行的是较新版本之一,可以尝试一下。

    【讨论】:

    • 谢谢@Charles。请给我一些提示,这里的“文件接收器”和“父级”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 2018-08-30
    • 1970-01-01
    • 2016-12-12
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多