Отмена старых разделов в таблице Athena

У меня есть некоторые сводные данные, которые я создаю каждую ночь и сохраняю в корзине S3 с разбиением по дате. Я выполняю ALTER TABLE foo ADD PARTITION ... для добавления каждого нового раздела в Афину по мере его создания. Мне удалось убедиться, что это успешно добавляет данные и что я могу запросить их в Афине. Пока все хорошо.

Сейчас я бы хотел, чтобы данные старше 30 дней автоматически удалялись. Я могу настроить правило жизненного цикла, чтобы удалить старые данные из S3; это также автоматически удалит его из Афины,или мне нужно предпринять прямые действия в самой Афине, чтобы удалить его из таблицы?

Кажется, это работает так, как я ожидал, когда я просто удаляю раздел в S3, но я не могу найти ничего окончательного, что говорит об этом - рекомендуемый способ справиться с этим.

1
задан 27 April 2020 в 01:05
2 ответа

После некоторых экспериментов Афина не не удаляет ссылки на объекты, удаленные операциями S3, или, по крайней мере, не сразу - - возможно, что «конечная согласованность» решит проблему в какой-то момент, но если вы ожидаете, что это произойдет в краткосрочной перспективе, вам нужно сделать это самостоятельно. Вы должны использовать ALTER TABLE в DROP разделы, если вы действительно хотите, чтобы они удалились.

Я проверил это, загрузив файл несколько раз под разными именами и удалив все, кроме одного . Запрос COUNT (*) показал, что записи все еще были видны Афине в течение нескольких минут после удаления, но операция DROP PARTITION / ADD PARTITION была сброшена их немедленно.

Поэтому я бы не стал рассчитывать на регулярное управление жизненным циклом S3, чтобы позаботиться и об Афине.

0
ответ дан 4 January 2021 в 09:01

IIRC мы используем Glue Crawler для повторного сканирования S3 и воссоздания таблиц Athena каждую ночь. Не уверен на 100%, нужно ли это, а может и нет. Хотя это не повредит :)

0
ответ дан 4 January 2021 в 09:01

Теги

Похожие вопросы