Невозможно удалить раздел в Афине

У меня в Афине плохо отформатированный раздел. Я разделяю год, месяц, день и час как целочисленные столбцы, но по ошибке создал разделы как числа с плавающей запятой.

i.e

/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. Похоже, Афина не знает, что делать с десятичными знаками.

Как мне избавиться от неисправного раздела?

РЕДАКТИРОВАТЬ:

Единственный способ решить эту проблему - воссоздать таблицу и отремонтировать ее. Все еще ищу другое решение, потому что это было бы облом для производства.


person micah    schedule 22.04.2019    source источник


Ответы (1)


Не могли бы вы однажды попробовать этими методами сбросить все разделы:

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')
person Shu    schedule 22.04.2019
comment
Я добавил разделы с неправильным форматом даты, которые затем нельзя было удалить, потому что они не были действительными датами. Изменение типа в схеме в Glue на строку позволило мне удалить разделы. После этого я смог вернуться к прежнему состоянию. Надеюсь, что дополнительная информация о клее поможет и спасибо! - person Tad M.; 10.09.2020
comment
У меня была аналогичная проблема, но мой ключ раздела был в формате отметки времени, и я случайно создал раздел со строковым значением. В моем случае сработало ALTER TABLE my_table DROP PARTITION (partition_key = "") (неправильное значение было непустой строкой), а затем MSCK REPAIR TABLE my_table. Похоже, Афина каким-то образом интерпретировала пустую строку и удалила поврежденные разделы. - person Michał Urbanowicz; 25.03.2021