1

我在 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)

但是这个添加分区命令忽略了月份分区中的前导零,并在 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

4

2 回答 2

2

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

于 2016-06-25T17:04:28.363 回答
0

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

于 2016-06-24T20:23:10.673 回答