我有S3存储桶,用于存储来自不同客户端的不同格式的所有文件,并且不时有新文件到达。
来自不同客户端的文件存储在CLIENT_ID
子文件夹下。这些子文件夹中的文件具有相同的格式。但是,文件夹之间的文件格式可能会有所不同。例如,在文件夹CLIENT_1
中,我们在CLIENT_2中有用","
分隔的CSV文件,在"|"
中有CSV文件,在CLIENT_N
中,则有JSON文件,依此类推。 / p>
S3
Client1
file1.csv
file2.csv
Client2
file1.json
ClientN
file.txt
我可以有成千上万个这样的文件夹/文件,并且我需要监视/ ETL所有它们(处理现有文件并连续处理这些文件夹中的新到达文件)。在这些文件的ETL之后,我希望以我的通用格式获取规范化的信息,并在通用表中将其存储在数据库中的某个地方,比如说在AWS RedShift中
我认为可以将AWS Glue用于此目的。例如,新文件的到来将自动触发Glue ETL作业(可能吗?)。
现在,我不了解如何使用AWS Glue正确组织这些数据的ETL。我想(希望)我可以使用Glue数据目录来从S3文件创建表。.但是如何让Glue数据目录知道新数据已经到达,并且必须在Glue ETL作业之前也进行元存储? / p>
此外,如何在Glue ETL作业中仅接收有关未处理数据/表的信息,以便不处理先前处理的数据?如何获取有关创建表的原始S3文件名的信息?我需要此信息以便接收CLIENT_ID
(bitbucket文件夹名称),以便能够使用与此特定客户端相关的设置来配置我的Glue ETL作业。
请告知。我将非常感谢对此的任何帮助。谢谢!