3

我有一个名为employee_part 的分区表。这个表是由hiredate 分区的。它具有如下所示的元数据

在此处输入图像描述

当我尝试将新的列分区添加到 employee_part 表时,我收到一条错误消息

 ALTER TABLE employee_part ADD PARTITION (gender='M') location 'hdfs://user/hive/warehouse/maprpoc.db/employee_part/hiredate=1985-11-21';

失败:SemanticException 分区规范 {gender=M} 包含非分区列

在此处输入图像描述

请澄清这一点!提前致谢..

4

2 回答 2

0

此命令不能添加新的分区列,您可以使用它在现有列上添加新的分区。

ALTER TABLE employee_part ADD PARTITION (gender='M') location 'hdfs://user/hive/warehouse/maprpoc.db/employee_part/hiredate=1985-11-21';

因此,您会收到以下消息:

FAILED: SemanticException Partition spec {gender=M} contains non-partition columns

这并不意味着“添加一个名为性别的新列分区,它的数据位于某处”。这意味着“在性别(列)上添加一个新分区(读取:新数据),但性别不是分区列,这是你得到的错误”。

ADD PARTITION 在 PARTITIONED EXTERNAL TABLES 上非常有用,当 HDFS 上有新数据可用时,您可以使用它将它们添加到表中。

所以答案是否定的。您不能在现有表上添加新的分区列。

于 2016-09-02T23:23:42.650 回答
0

那是因为您在hiredate 上对数据进行了分区,但尝试在性别列上添加分区。

在hiredate上创建分区,即

 ALTER TABLE employee_part ADD PARTITION (hiredate='1985-11-21') location 'hdfs://user/hive/warehouse/maprpoc.db/employee_part/hiredate=1985-11-21';
于 2016-08-15T19:42:26.430 回答