将多租户文件标准化为通用模式

时间:2018-11-15 11:31:10

标签: apache-spark amazon-s3 spark-streaming amazon-sqs

我有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()

请告知。我将非常感谢对此的任何帮助。谢谢!

0 个答案:

没有答案