【问题标题】:How to delete one of the two partition columns in Hive?如何删除 Hive 中的两个分区列之一?
【发布时间】:2018-05-08 10:43:49
【问题描述】:

我创建了一个带有两个分区列 col 1 和 col2 的 hive 表,现在出于某种分析目的,我希望删除 col2 分区。

基本上我希望列 - col2 从分区列列表中删除,但我不应该丢失 col2 中的数据。

显然,最终表应仅由 col1 分区,而 col2 也应存在于最终分区表中,但作为普通列而不是分区列。

请提出前进的方向。

【问题讨论】:

    标签: hadoop hive hiveql cloudera


    【解决方案1】:

    以下是最好的方法之一。 只需更新 hive 分区:

    ALTER TABLE <table_anme> PARTITION(year = 2018, month = 05) 
    SET LOCATION 'hdfs://some/temp/location/tale_name/2018/05';
    

    它将分区设置为新位置,并且不会移动或删除您的数据文件。

    现在删除分区,

    ALTER TABLE <table_name> DROP IF EXISTS PARTITION(year = 2018, month = 05);
    

    万事如意!!!

    【讨论】:

      【解决方案2】:

      没有明确的命令可以删除 hive 中的列。但是,您可以使用下面的 REPLACE 命令来完成。

      ALTER TABLE <table_name> REPLACE COLUMNS(column1 <type>, column2 <type>);
      

      假设你有一个表 TEST

      CREATE TABLE TEST(a int, b int, c int);
      

      现在你想删除c列,那么你可以这样做:

      ALTER TABLE TEST REPLACE COLUMNS (a int, b int); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        相关资源
        最近更新 更多