Hadoop 配置单元添加分区语句忽略前导零

Hadoop 配置单元添加分区语句忽略前导零,hadoop,hive,yarn,hive-partitions,hiveddl,Hadoop,Hive,Yarn,Hive Partitions,Hiveddl,我在hdfs上有一个文件夹 /user/test/year=2016/month=04/dt=25/000000\u 0 需要将上述分区路径添加到测试表中 命令: ALTER TABLE test ADD IF NOT EXISTS PARTITION (year=2016,month=04,dt=25) 但是这个addpartition命令忽略了month分区中的前导零,并在2016年内创建了一个额外的文件夹month=4。 /user/test/year=2016/month=04/ /u

我在hdfs上有一个文件夹
/user/test/year=2016/month=04/dt=25/000000\u 0

需要将上述分区路径添加到测试表中

命令:

ALTER TABLE test ADD IF NOT EXISTS PARTITION (year=2016,month=04,dt=25)
但是这个addpartition命令忽略了month分区中的前导零,并在2016年内创建了一个额外的文件夹month=4。
/user/test/year=2016/month=04/
/user/test/year=2016/month=4/
该表将指向不包含任何数据的路径
/user/test/year=2016/month=4/

我查过日志,上面写着
WARN org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer-分区Spec month=04已更改为month=4

请让我知道,如果有人面临这种问题,以及如何避免这种情况


配置单元版本为:1.2.1000

如果已创建分区文件夹,则可以使用
MSCK修复表测试。它将扫描所有目录并创建新分区。欲了解更多详情,请访问。或者您应该对分区列使用字符串而不是INT。

您对分区使用的是整型。如果需要前导零,则使用字符串分区和引号:
altertable test ADD If NOT EXISTS PARTITION(year='2016',month='04',dt='25')

是的,我使用了引号。