Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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