我有一个名为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';
FAILED:SemanticException分区规范{gender = M}包含非分区列
请澄清一下!提前谢谢..
答案 0 :(得分: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';
答案 1 :(得分: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
不意味着"添加名为gender的新列分区,其中数据位于某处"。 这意味着"在性别(列)上添加一个新分区(读取:新数据),但性别不是分区列,这是您得到的错误"。
ADD PARTITION在分区外部表格上非常有用,当HDFS上有新数据时,您可以使用它将它们添加到表格中。
所以答案是否定的。 您无法在现有表格上添加新分区列。