AWS Склейка нормализации мультитенантных файлов в общую схему

У меня есть корзина S3, где хранятся все файлы в разных форматах и ​​от разных клиентов, и время от времени появляются новые файлы.

Файлы от разных клиентов хранятся под CLIENT_ID вложенная папка. Внутри этих подпапок файлы имеют одинаковый формат. Но от папки к папке формат файла может отличаться. Например, в папке CLIENT_1 у нас есть файлы CSV, разделенные "," в CLIENT_2 у нас есть файлы CSV, разделенные "|", в CLIENT_N у нас есть файлы JSON и так далее.

S3
   Client1
      file1.csv
      file2.csv
   Client2
      file1.json
   ClientN
      file.txt

У меня может быть тысячи таких папок / файлов, и мне нужно отслеживать /ETL все из них (обрабатывать существующие файлы и непрерывно обрабатывать вновь поступившие файлы в этих папках). После ETL этих файлов я хочу получить нормализованную информацию в моем общем формате и сохранить ее где-нибудь в базе данных в общей таблице, скажем, в AWS RedShift.

Я думаю о возможности использовать клей AWS для этой цели. Например, задание Glue ETL будет запускаться автоматически при поступлении нового файла (возможно ли это?).

Сейчас я не понимаю, как правильно организовать ETL этих данных с помощью AWS Glue. Я думаю (надеюсь), что я могу использовать Glue Data Catalog для создания таблиц из файлов S3... но как сообщить Glue Data Catalog, что новые данные поступили и должны быть также сохранены в метаданных перед заданием Glue ETL?

Кроме того, как получить в задании Glue ETL информацию только о необработанных данных / таблицах, чтобы не обрабатывать ранее обработанные данные? Как получить информацию об исходном имени файла S3, из которого была создана таблица? Мне нужна эта информация для того, чтобы получить CLIENT_ID(имя папки bitbucket), чтобы можно было настроить мою работу Glue ETL с настройками, связанными с этим конкретным клиентом.

Пожалуйста, порекомендуйте. Я буду очень признателен за любую помощь в этом. Спасибо!

0 ответов

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