是否可以在HIVE中更改分区元数据?

问题描述 投票:1回答:1

这是我问的先前问题的扩展:How to compare two columns with different data type groups

我们正在探索更改表上元数据的想法,而不是对SELECT语句中的数据执行CAST操作。更改MySQL Metastore中的元数据非常容易。但是,是否有可能将元数据更改应用于分区(它们是每天的)?否则,当历史记录为STRING时,我们可能会停留在BIGINT类型的当前和将来数据中。

问题:是否可以在HIVE中更改分区元数据?如果是,如何?

sql hadoop hive cloudera hive-metastore
1个回答
0
投票
您可以使用此语句更改分区列的类型:

alter table {table_name} partition column ({column_name} {column_type});

此外,您可以使用以下步骤重新创建表定义并更改所有列的类型:

  1. 将表放置在外部,因此可以在不删除数据的情况下将其删除

    ALTER TABLE abc SET TBLPROPERTIES('EXTERNAL'='TRUE');

  2. 拖放表(仅元数据将被删除。)>] >>

    使用类型已更改的更新的DDL创建EXTERNAL表

  3. 恢复分区:
  4. MSCK [REPAIR] TABLE tablename;

    在Amazon Elastic MapReduce(EMR)的Hive版本上的等效命令是:

    ALTER TABLE tablename RECOVER PARTITIONS;

这将添加Hive分区元数据。参见手册:RECOVER PARTITIONS

    最后,如果需要,您可以再次使表MANAGED:
  • ALTER TABLE tablename SET TBLPROPERTIES('EXTERNAL'='FALSE');
  • © www.soinside.com 2019 - 2024. All rights reserved.