我在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
2条答案
按热度按时间fumotvh31#
您正在为分区使用整数类型。如果需要前导零而不是使用字符串分区和引号:
ALTER TABLE test ADD IF NOT EXISTS PARTITION (year='2016',month='04',dt='25')
wwodge7n2#
你可以用
MSCK REPAIR TABLE test
如果已创建分区文件夹。它将扫描所有目录并创建新分区。有关更多详细信息,请访问hive语言手册。或者您应该对分区列使用string而不是int。