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 с настройками, связанными с этим конкретным клиентом.
Пожалуйста, порекомендуйте. Я буду очень признателен за любую помощь в этом. Спасибо!