Автоматизируйте управление разделами внешних ульев / таблиц athena
В настоящее время у меня есть архитектура больших данных, где некоторые конвейеры данных генерируют данные и сохраняют их в AWS S3. У меня также есть внутреннее хранилище метаданных, где я отслеживаю каждый URL-адрес S3 и статус (указывая, является ли URL действительным или нет).
Имеется запланированный сканер склеивания AWS, который сканирует префикс S3 и добавляет новые сгенерированные пути S3 в качестве новых разделов в связанную внешнюю таблицу athena. Таким образом, данные в моей внешней таблице автоматически обновляются и доступны для запроса. Это отлично работает.
Вот новое требование, которое я хочу интегрировать с этой архитектурой: пользователи могут пометить некоторые URL-адреса S3 как недопустимые в метасхранилище с самостоятельным управлением, и я хочу автоматически удалить эти разделы из моей внешней таблицы.
Хотите знать, что может быть лучшим подходом для решения этой проблемы?
Например: учтите, что в корзине S3 содержится 50 URL-адресов, и это отражено в мета-хранилище с самостоятельным управлением, как показано ниже:
Похоже, что даже если я отброшу разделы, обратившись к мегамаркету за недействительными разделами, они снова появятся при следующем запуске сканера клея. Перемещение / удаление данных из префикса S3 - единственный вариант здесь? Спасибо!
1 ответ
Сканер клея работает хорошо, если у вас простой процесс и вам не требуется много гибкости или настройки. Мне нравится это как отправная точка. Я не уверен, что это хорошо работает для сложной системы.
В этом случае я бы отключил гусеничный клей. Вы правы - сканер просто повторно добавит эти удаленные разделы.
- Вы можете очень легко добавлять и удалять разделы из таблицы Athena, используя
ALTER TABLE
, - Явно вызвать
ALTER TABLE ADD PARTITION
Команда, когда новый файл удаляется. Это очень просто - пусть лямбда-функция прослушивает событие S3, созданное объектом.
- Объект сбрасывается и событие срабатывает
- Лямбда-функция запускается и видит ключ объекта
- Вызывает запрос Athena для добавления нового объекта в качестве раздела.
Явно вызвать
ALTER TABLE DROP PARTITION
команда, когда пользователь помечает для удаления.
Единственное, что нужно отметить, это то, что я считаю, что разделы Athena должны быть "папками", то есть расположение раздела должно заканчиваться на /
, и вы не можете добавить один файл в качестве раздела. Любой файл, добавленный в "папку", о которой знает Афина, будет добавлен в любой запрос. Возможно, вам придется пересмотреть свою файловую структуру (на основе размещенного вами образца), если это так.