我在Hive上有几个表,我的查询试图检索过去x天的数据。当我使用直接日期时,Hive会修剪分区,但是使用公式时会进行全表扫描。
select *
from f_event
where date_key > 20160101;
scanned partitions..
s3://...key=20160102 [f]
s3://...key=20160103 [f]
s3://...key=20160104 [f]
如果我使用一个公式来获取过去四周的数据,比如说:
Select count(*)
From f_event f
Where date_key > from_unixtime(unix_timestamp()-2*7*60*60*24, 'yyyyMMdd')
这是在表中扫描所有分区。
环境:Hadoop 2.6.0、EMR、Hive on S3、Hive 1.0.0