hadoop—是否可以将新的列分区添加到hive中已经存在的分区表中

bbuxkriu  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(563)

我有一个名为employee\u part的分区表。这个表由hiredate分区。它的元数据如下所示

当我尝试向employee\u 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}包含非分区列

请澄清这一点!提前谢谢。。

js81xvg6

js81xvg61#

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

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

这并不意味着“添加一个名为gender的新列分区,它将数据放在某个地方”。它的意思是“在gender(column)上添加一个新分区(read:newdata),但是gender不是分区列,这是您得到的错误”。
addpartition在已分区的外部表上非常有用,当hdfs上有新数据可用时,可以使用它将它们添加到表中。
所以答案是否定的。不能在现有表上添加新的分区列。

ds97pgxw

ds97pgxw2#

这是因为您已经在hiredate上对数据进行了分区,但正在尝试在gender列上添加分区。
在hiredate上创建分区,即。

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

相关问题