我在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
答案 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')