hive add partition语句忽略前导零

s71maibg  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(470)

我在hdfs上找到了一个文件夹 /user/test/year=2016/month=04/dt=25/000000_0 需要将上述分区路径添加到测试表中。
命令:

ALTER TABLE test ADD IF NOT EXISTS PARTITION (year=2016,month=04,dt=25)

但是这个add partition命令忽略了month分区中的前导零,并在2016年内创建了一个额外的文件夹month=4。
/user/test/year=2016/month=04/ /user/test/year=2016/month=4/ table将被指向 /user/test/year=2016/month=4/ 此路径不包含任何数据。
我查过日志上面写着 WARN org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer - Partition Spec month=04 has been changed to month=4 请让我知道,如果有人面临这种问题,如何避免这种情况?
配置单元版本为:1.2.1000

fumotvh3

fumotvh31#

您正在为分区使用整数类型。如果需要前导零而不是使用字符串分区和引号: ALTER TABLE test ADD IF NOT EXISTS PARTITION (year='2016',month='04',dt='25')

wwodge7n

wwodge7n2#

你可以用 MSCK REPAIR TABLE test 如果已创建分区文件夹。它将扫描所有目录并创建新分区。有关更多详细信息,请访问hive语言手册。或者您应该对分区列使用string而不是int。

相关问题