Автоматизируйте управление разделами внешних ульев / таблиц 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, созданное объектом.

    1. Объект сбрасывается и событие срабатывает
    2. Лямбда-функция запускается и видит ключ объекта
    3. Вызывает запрос Athena для добавления нового объекта в качестве раздела.
  • Явно вызвать ALTER TABLE DROP PARTITION команда, когда пользователь помечает для удаления.

Единственное, что нужно отметить, это то, что я считаю, что разделы Athena должны быть "папками", то есть расположение раздела должно заканчиваться на /, и вы не можете добавить один файл в качестве раздела. Любой файл, добавленный в "папку", о которой знает Афина, будет добавлен в любой запрос. Возможно, вам придется пересмотреть свою файловую структуру (на основе размещенного вами образца), если это так.

Другие вопросы по тегам