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