【问题标题】:Does the order of where conditions in hive queries has impact on the query performance?Hive 查询中 where 条件的顺序对查询性能有影响吗?
【发布时间】:2015-08-13 12:20:53
【问题描述】:

我的问题是我的 Hive SQL 查询有时会导致全表扫描并持续很长时间。因此,我想知道 where 语句的顺序是否真的对查询的性能有影响。

例如该查询具有基于日期的主键和用于区分对象的辅助键。我只想分析昨天的数据,应该比全表扫描快很多。

查询 1:

SELECT 
    primarykey, 
    COALESCE(SUM(param1),0L), 
    COALESCE(SUM(param2),0L), 
    param3 
FROM 
    Table 
WHERE
    param1 = "abc" AND
    param2 > 0 AND
    primarykey = yesterdaysdate
GROUP BY 
    param3;

查询 2:

SELECT 
    primarykey, 
    COALESCE(SUM(param1),0L), 
    COALESCE(SUM(param2),0L), 
    param3 
FROM 
    Table 
WHERE
    primarykey = yesterdaysdate AND
    param1 = "abc" AND
    param2 > 0
GROUP BY 
    param3;

查询 2 是否可能比查询 1 更快?

在我看来,由于查询优化器的原因,这不应该有任何影响。

【问题讨论】:

    标签: performance hadoop hive hiveql


    【解决方案1】:

    hive 查询在内部作为 MR 作业执行。查询的 where 子句应被视为过滤条件。所以它应该不会对性能产生任何影响。

    【讨论】:

    • 但是以错误的顺序过滤map reduce确实有影响!?但是使用 hive 我并没有自己构建 map reduce 语句
    • @Manuel 我认为所有的过滤条件都会在一个 map reduce 任务中被一次性考虑。它不应该像为更多数量的过滤条件运行不同或更多数量的 MR 作业一样。
    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多