AWS склеивает нормализацию мультитенантных файлов в общую схему - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть корзина 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 с настройками, связанными с этим конкретным клиентом.

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

...