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

hive add partition statement ignores leading zero

我在 hdfs 上有文件夹
/user/test/year=2016/month=04/dt=25/000000_0

需要将上述分区路径添加到 test table.

命令:

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

但是这个添加分区命令忽略了月份分区中的前导零,并在 2016 年内创建了一个额外的文件夹,作为月份 = 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

请告诉我是否有人遇到过此类问题以及如何避免这种情况?

Hive 版本为:1.2.1000

如果分区文件夹已经创建,您可以使用MSCK REPAIR TABLE test。它将扫描所有目录并创建新分区。有关详细信息,请访问 Hive Language Manual。或者您应该对分区列使用 STRING 而不是 INT。

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