【问题标题】:Is it possible to add new column partition to already existing partitioned table in hive是否可以将新的列分区添加到 hive 中已经存在的分区表
【发布时间】:2015-09-02 08:03:44
【问题描述】:

我有一个名为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} 包含非分区列

请澄清一下!提前谢谢..

【问题讨论】:

标签: hadoop apache-hive


【解决方案1】:

那是因为您在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';

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多