У меня есть некоторые сводные данные, которые я создаю каждую ночь и сохраняю в корзине S3 с разбиением по дате. Я выполняю ALTER TABLE foo ADD PARTITION ...
для добавления каждого нового раздела в Афину по мере его создания. Мне удалось убедиться, что это успешно добавляет данные и что я могу запросить их в Афине. Пока все хорошо.
Сейчас я бы хотел, чтобы данные старше 30 дней автоматически удалялись. Я могу настроить правило жизненного цикла, чтобы удалить старые данные из S3; это также автоматически удалит его из Афины,или мне нужно предпринять прямые действия в самой Афине, чтобы удалить его из таблицы?
Кажется, это работает так, как я ожидал, когда я просто удаляю раздел в S3, но я не могу найти ничего окончательного, что говорит об этом - рекомендуемый способ справиться с этим.
После некоторых экспериментов Афина не не удаляет ссылки на объекты, удаленные операциями S3, или, по крайней мере, не сразу - - возможно, что «конечная согласованность» решит проблему в какой-то момент, но если вы ожидаете, что это произойдет в краткосрочной перспективе, вам нужно сделать это самостоятельно. Вы должны использовать ALTER TABLE
в DROP
разделы, если вы действительно хотите, чтобы они удалились.
Я проверил это, загрузив файл несколько раз под разными именами и удалив все, кроме одного . Запрос COUNT (*)
показал, что записи все еще были видны Афине в течение нескольких минут после удаления, но операция DROP PARTITION
/ ADD PARTITION
была сброшена их немедленно.
Поэтому я бы не стал рассчитывать на регулярное управление жизненным циклом S3, чтобы позаботиться и об Афине.
IIRC мы используем Glue Crawler для повторного сканирования S3 и воссоздания таблиц Athena каждую ночь. Не уверен на 100%, нужно ли это, а может и нет. Хотя это не повредит :)