hive add partition语句忽略前导零

时间:2016-06-24 15:47:21

标签: hadoop hive yarn

我在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命令忽略了月分区中的前导零,并在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 - Partition Spec month=04 has been changed to month=4

如果有人遇到这类问题以及如何避免这种情况,请告诉我?

Hive版本是:1.2.1000

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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