Hadoop 配置单元分区查询正在扫描所有分区

Hadoop 配置单元分区查询正在扫描所有分区,hadoop,hive,Hadoop,Hive,当我像下面这样编写配置单元查询时 select count(*) from order where order_month >= '2016-11'; 阶段1的Hadoop作业信息:映射者数量:5;减速器数量:1 我只得到5个映射器,这意味着只读取所需分区(2016-11和2016-12) 与我使用函数编写的查询相同 select count(*) from order where order_month >= concat(year(DATE_SUB(to_date(from_u

当我像下面这样编写配置单元查询时

select count(*)
from order
where order_month >= '2016-11';
阶段1的Hadoop作业信息:映射者数量:5;减速器数量: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(年份(日期(至日期)(自UNIX时间戳()),10)),“-”,月份(日期(至日期)(自UNIX时间戳()),10))) ='2016-11'

阶段1的Hadoop作业信息:映射者数量:216;减速器数量:1

这次它读取所有分区{2004-10到2016-12}

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

unix\u timestamp()
函数是不确定的,会妨碍查询的正确优化-自2.0以来,该函数一直被弃用,取而代之的是
CURRENT\u timestamp
CURRENT\u DATE

使用当前_日期,也不需要单独计算年和月:

where order_month >= substr(date_sub(current_date, 10),1,7)
unix\u timestamp()
函数是不确定的,会妨碍查询的正确优化-自2.0以来,该函数一直被弃用,取而代之的是
CURRENT\u timestamp
CURRENT\u DATE

使用当前_日期,也不需要单独计算年和月:

where order_month >= substr(date_sub(current_date, 10),1,7)
也可以看这个问题,也可以看这个问题