gpt4 book ai didi

hadoop - Hive分区查询正在扫描所有分区

转载 作者:行者123 更新时间:2023-12-02 19:24:43 26 4
gpt4 key购买 nike

当我写如下的 hive 查询时

select count(*)
from order
where order_month >= '2016-11';

第1阶段的Hadoop作业信息:映射器数量:5; reducer 数量:1

我仅获得5个映射器,这意味着仅读取所需的分区(2016-11和2016-12)

我使用函数编写的相同查询
select count(*)
from order
where order_month >= concat(year(DATE_SUB(to_date(from_unixtime(UNIX_TIMESTAMP())),10)),'-',month(DATE_SUB(to_date(from_unixtime(UNIX_TIMESTAMP())),10)));

注意:

concat(year(DATE_SUB(to_date(from_unixtime(UNIX_TIMESTAMP())),10)),'-',month(DATE_SUB(to_date(from_unixtime(UNIX_TIMESTAMP())),10))) = '2016-11'



第1阶段的Hadoop作业信息:映射器数量:216; reducer 数量:1

这次是读取所有分区{ 2004-10至2016-12}。 。

如何修改查询以仅读取所需的分区。

最佳答案

unix_timestamp()函数是不确定性的,会阻止适当的查询优化-从2.0开始,建议使用CURRENT_TIMESTAMPCURRENT_DATE弃用此函数。

使用current_date,也无需分别计算年和月:

where order_month >= substr(date_sub(current_date, 10),1,7)

关于hadoop - Hive分区查询正在扫描所有分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com