我有S3,其中存储了来自不同客户端的不同格式的所有文件,并且新文件到达了。
来自不同客户端的文件存储在CLIENT_ID
子文件夹下。这些子文件夹中的文件具有相同的格式。但是,文件夹之间的文件格式可能会有所不同。例如,在文件夹CLIENT_1
中,我们在CLIENT_2中有用","
分隔的CSV文件,在"|"
中有CSV文件,在CLIENT_N
中,则有JSON文件,依此类推。 / p>
我可以有成千上万个这样的文件夹,并且我需要监视/ ETL所有这些文件夹(处理这些文件夹中的现有文件并连续处理新到达的文件)。在这些文件的ETL之后,我希望以我的通用格式获取规范化的信息,并将其存储在通用表中的数据库中。
请告知如何使用AWS和Apache Spark正确实施此架构。
我想我可以尝试使用Spark Streaming和Databricks S3-SQS连接器https://docs.databricks.com/spark/latest/structured-streaming/sqs.html来实现它,但是我不明白在使用Databricks S3-SQS连接器时应将转换逻辑放在哪里。
还不清楚,还是可以使用Databricks S3-SQS连接器监视不同的S3文件夹并提供不同的spark.readStream
配置,以便能够以不同的架构和文件格式加载文件。
此外,拥有数千个不同的spark.readStream
实例来独立监视数千个AWS S3文件夹是否是一个好主意,例如:
spark.readStream \
.format("s3-sqs") \
.option("fileFormat", "json") \
.option("queueUrl", ...) \
.schema(...) \
.load()
请告知。我将非常感谢对此的任何帮助。谢谢!