在Where条件中使用变量时,Hive查询运行速度非常慢

时间:2015-10-27 13:36:24

标签: performance variables hadoop hive

这是我的hive查询:

set s=date_add(from_unixtime(UNIX_TIMESTAMP()),-200);
select * from a where dateString>=${hiveconf:s}

运行速度非常慢。出于某种原因,这种运行速度要快得多:

select * from a where dateString>='2015-01-01'

因此,使用相同的日期值,第一个值要慢得多。为什么是这样?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在指定分区时,动态分区修剪不会发生(除非使用Hive> = 0.14)。在where子句中指定精确值时,hive知道要扫描的分区。从配置变量或另一个查询的结果指定时,配置单元不知道要扫描的分区。 我建议使用Hive> = 0.14或通过shell脚本而不是hive conf替换变量来指定分区的确切值。