gpt4 book ai didi

sql - 是否可以更改 HIVE 中的分区元数据?

转载 作者:行者123 更新时间:2023-12-04 13:43:15 25 4
gpt4 key购买 nike

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

我们正在探索更改表上元数据的想法,而不是在 SELECT 语句中对数据执行 CAST 操作。更改 MySQL Metastore 中的元数据很容易。但是,是否可以将元数据更改应用于分区(它们是每天)?否则,我们可能会被当前和 future 的数据类型为 BIGINT 而历史数据为 STRING 所困扰。

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

最佳答案

您可以使用以下语句更改分区列类型:

alter table {table_name} partition column ({column_name} {column_type});
您还可以使用以下步骤重新创建表定义并更改所有列类型:
  • 使您的表成为外部表,以便可以在不删除数据的情况下删除它ALTER TABLE abc SET TBLPROPERTIES('EXTERNAL'='TRUE');
  • 删除表(只会删除元数据)。
  • 使用更新的 DDL 创建 EXTERNAL 表,其中类型已更改并具有相同的 LOCATION。
  • 恢复分区: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');

    Note: All commands above should be ran in HUE, not MySQL.

    关于sql - 是否可以更改 HIVE 中的分区元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58294633/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com