我有一个名为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}包含非分区列
请澄清这一点!提前谢谢。。
2条答案
按热度按时间js81xvg61#
此命令无法添加新分区列,您可以使用它在现有列上添加新分区。
因此,您将收到以下消息:
这并不意味着“添加一个名为gender的新列分区,它将数据放在某个地方”。它的意思是“在gender(column)上添加一个新分区(read:newdata),但是gender不是分区列,这是您得到的错误”。
addpartition在已分区的外部表上非常有用,当hdfs上有新数据可用时,可以使用它将它们添加到表中。
所以答案是否定的。不能在现有表上添加新的分区列。
ds97pgxw2#
这是因为您已经在hiredate上对数据进行了分区,但正在尝试在gender列上添加分区。
在hiredate上创建分区,即。