Hive全表扫描问题(使用的分区列)

时间:2017-04-20 07:09:00

标签: performance hive partition orc full-table-scan

我在Hive 0.13中有一张BIG表 - 它每天有大约250 GB的数据。因此,每小时大约有10 GB的数据。我有一个BI工具,希望每天或每小时访问此表的数据,我需要测试BI工具将在Hive上生成和运行的查询。

当BI用于昨天的每日数据时,其中一个查询如下所示:

select count(*) 
from my_table
where 
yyyy=year(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
and mm=month(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
and dd=day(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
;

MY_TABLE中的Hive表,而YYYY,MM和DD是MY_TABLE中的分区列。它已经以ORC格式存储。

以上查询运行的时间非常长,当我看到EXPLAIN EXTENDED输出时,我清楚地看到它正在进行MY_TABLE的全表扫描,而不管过滤条件如何。

我们如何避免这个问题?

请告知。

再次注意:Hive版本是0.13。我们正处于升级阶段。

谢谢,

Suddhasatwa

注意:

此处提供的解决方案(Why partitions elimination does not happen for this query?)在我的情况下不适用,因为我使用的是Hive 0.13,而CURRENT_DATE函数仅在Hive版本1 +后可用。

0 个答案:

没有答案