hadoop - hive :重命名和更改表后,Metastore不会更新

标签 hadoop hive

我有一个外部表名称MIAC,并将其重命名为MIAC_BKUP。另外,我使用Alter语句将外部表的位置从MIAC重命名为MIAC_bkup。
现在,我再次创建一个名称为MIAC的新外部表以填充新值,但我看到MIAC_BKUP也仅使用新值而不使用bckup值进行更新。
我怀疑metastore无法更新。我进行了MSCK维修,但没有成功。
都是分区表

最佳答案

因此,您需要在流程中进行三件事更改。

  • 将表从MIAC重命名为MIAC_bkup(您已这样做)
  • 将表位置hdfs:///<some-lcoation>/MIAC重命名为hdfs:///<some-lcoation>/MIAC_bkup(您也这样做)
  • 通过以下查询让表格知道您的新位置。
  • ALTER TABLE MIAC_bkup SET LOCATION "hdfs:///<some-lcoation>/MIAC_bkup"
    

    因此,当您将数据添加到新的MIAC中时,备份表和新表都指向hdfs:///<some-lcoation>/MIAC。这就是您在备份表中看到通过新表添加的数据的原因。

    Untill here everything should work for you. Even you don’t have to do msck repair.

    I believe you don’t have partition, because in that case your issue would be different.
    But if the table has partition please follow these additional steps.



    在元数据中,配置单元还存储分区位置。
    因此,您现有的分区元数据不知道位置更改。
    您还需要刷新分区元数据。

    MSCK REPAIR不能完成这项工作。您必须1从元数据中删除所有分区信息,然后执行MSCK来同步备份位置中的旧分区。
    -- drop all partiotion
    ALTER TABLE MIAC_bkup DROP PARTITION(partition_name <> ''); --refer this to understand 
    
    -- repair table
    MSCK REPAIR TABLE MIAC_bkup;
    

    NB: MSCK repair doesn’t delete partition, it only adds or checks inconsistency

    关于hadoop - hive :重命名和更改表后,Metastore不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62307464/

    相关文章:

    sql - 从两个表中选择并使用侧面 View 配置单元

    hadoop - 为什么会有 Pig 和 Hive

    mysql - Sqoop 增量加载 lastmodified 不适用于更新的记录

    hadoop - Apache Hive 安装在伪分布式或多节点集群环境

    oracle - 与 Oracle 相比,在 Hadoop 中的表上使用索引有什么优势吗?

    hive - 如何更新/删除 Hive 分区?

    sql - 在 Hadoop MapReduce 中缓存 Map 应用程序?

    hadoop - HBase 1.4.9 创建表失败

    linux - 管道 envsubst 输出到配置单元

    amazon-web-services - 如何从 AWS 中的 Athena 检查分区列表?