2015-06-17 32 views
2

我有分区表称为employee_part。此表由hiredate进行分区。它的元数据低于是否可以将新的列分区添加到配置单元中已有的分区表

enter image description here

给出当我试图新列的分区添加到employee_part表即时得到一个错误说

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

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

enter image description here

请澄清一下!在此先感谢..

+0

有一个很好的答案类似的问题:[http://stackoverflow.com/questions/6631464/partition-hive-table-by-existing-field?rq=1](http://stackoverflow.com /问题/ 6631464 /分区的蜂巢表逐现有场?RQ = 1) –

回答

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'; 
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上有新数据时,您可以使用它将它们添加到表中。

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

相关问题