这是我的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'
因此,使用相同的日期值,第一个值要慢得多。为什么是这样?有什么想法吗?
答案 0 :(得分:0)
在指定分区时,动态分区修剪不会发生(除非使用Hive> = 0.14)。在where子句中指定精确值时,hive知道要扫描的分区。从配置变量或另一个查询的结果指定时,配置单元不知道要扫描的分区。 我建议使用Hive> = 0.14或通过shell脚本而不是hive conf替换变量来指定分区的确切值。