代码之家  ›  专栏  ›  技术社区  ›  micah

无法删除雅典娜中的分区

  •  1
  • micah  · 技术社区  · 5 年前

    我在雅典娜有一个格式不好的分区。我将年、月、日和小时划分为整数列,但错误地创建了浮动分区。

    /year=2019.0/month=4.0/day=22.0/hour=6.0

    而不是

    /year=2019/month=4/day=22/hour=6

    我删除了负责的S3文件并运行了 MSCK REPAIR TABLE 但是分区没有被移除。我尝试手动删除分区-

    ALTER TABLE my_table DROP PARTITION (year=2019.0)
    ALTER TABLE my_table DROP PARTITION (year='2019.0')
    

    但我搞错了

    失败:SemanticException[错误10006]:找不到分区(year=null)

    通知 year = null . 雅典娜似乎不知道如何处理小数。

    我该如何处理这个有问题的分区?

    编辑:

    唯一能解决这个问题的方法是重新创建表并修复它。仍然在寻找另一个解决方案,因为这将是一个在生产中的麻烦。

    0 回复  |  直到 5 年前
        1
  •  0
  •   notNull    5 年前

    您是否可以尝试使用这些方法删除所有分区:

    ALTER TABLE my_table DROP PARTITION (year > 0.0);
    (or)
    ALTER TABLE my_table DROP PARTITION (year > 0);
    

    (or)

    改变 datatype 属于 year String 然后尝试删除分区

    ALTER TABLE my_table DROP PARTITION (year='2019.0')