【问题标题】:Hive Partitions - How to delete null or hive_default_partitionHive 分区 - 如何删除 null 或 hive_default_partition
【发布时间】:2016-03-01 19:43:04
【问题描述】:

我在 hive 中遇到了 hive 默认分区(空分区)的问题。 我将在这里简要解释一下情况。我有一个 hive 主表,每天都在对该表进行数据摄取。但不知何故,当数据被摄取到配置单元表中时,出现了问题并且分区显示为 _hive_default_partition_ 或者在我的理解中它是空分区。

我需要从 hive 表中删除分区。 (它是外部表)...

我正在使用 hive 1.1 版和 CDH 5.4.8 版 ..

我尝试了以下语法,但它不适合我..

alter table "tablename" drop partition(partn='_hive_default_partition_);

alter table "tablename" drop partition(partn<'1');

alter table "tablename" drop partition(partn = 1);

alter table "tablename" drop partition(partn='0');

我尝试了上述所有步骤,但没有任何效果..

希望有人可以帮助我。

提前致谢,

【问题讨论】:

    标签: hive hdfs hiveql


    【解决方案1】:

    对我有用的方法是更改​​分区列的数据类型,删除分区并将其改回。

    考虑到您正在将分区与问题中的 int 进行比较,我假设这是要开始的列数据类型,但是无论您以何种数据类型开始,这都应该有效。

    -- Change the column type to string ALTER TABLE tablename PARTITION COLUMN (partn STRING);

    -- Drop the offending partitions ALTER TABLE tablename DROP PARTITION (partn='__HIVE_DEFAULT_PARTITION__');

    -- Change the column type back to int ALTER TABLE tablename PARTITION COLUMN (partn INT);

    【讨论】:

      【解决方案2】:

      只需从 hdfs 中删除目录并运行 msck repair table。

      来自外壳:hadoop fs -rm -r ..../partn=__HIVE_DEFAULT_PARTITION__

      来自蜂巢外壳:msck repair table table_name;

      【讨论】:

      • 这仅适用于您的分区列数据类型已经是字符串的情况。
      • 是的,你是对的。新注意到该表是外部的。我相应地调整了答案。
      【解决方案3】:

      我分三步实现了这个目标

      1. 使用从 HDFS 中删除分区数据 hadoop fs -rm -r -skipTrash 例如。

      hadoop fs -rm -r -skipTrash /apps/hive/warehouse/&lt;db-name&gt;/&lt;table-name&gt;/&lt;partition-name&gt;=__HIVE_DEFAULT_PARTITION__

      1. 打开 hive 客户端并运行

        set hive.msck.path.validation=ignore;

      2. 在 hive 客户端中运行它

        MSCK REPAIR TABLE &lt;db-name&gt;.&lt;table-name&gt;;

      【讨论】:

      • AFAIK,MSCK REPAIR 添加分区,但不会删除现有分区。
      【解决方案4】:

      试试这个:

      alter table `tablename` drop if exists partition (partn<>'');
      

      【讨论】:

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