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

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

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

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

Посоветуйте, пожалуйста, как правильно реализовать эту архитектуру с AWS и Apache Spark.

Полагаю, я могу попытаться реализовать это с помощью Spark Streaming и соединителя Databricks S3-SQS https://docs.databricks.com/spark/latest/structured-streaming/sqs.html, но я не понимаю, где должна располагаться логика преобразования при использовании соединителя Databricks S3-SQS.

Также неясно, или я могу отслеживать различные папки S3 с помощью разъема Databricks S3-SQS и предоставлять различные конфигурации spark.readStream, чтобы можно было загружать файлы с различными схемами и форматами файлов.

Также полезно иметь тысячи различных spark.readStream экземпляров, которые будут независимо контролировать тысячи папок AWS S3, например:

spark.readStream \
  .format("s3-sqs") \
  .option("fileFormat", "json") \
  .option("queueUrl", ...) \
  .schema(...) \
  .load()

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

...