AWS Glue & 去重增量 CSV 文件



我每天都有csv文件交付给S3,这些文件是当月增量的。因此,file1包含第1天的数据,file2包含第1和第2天的数据等。每天我都想对这些数据运行ETL,并将其写入不同的S3位置,这样我就可以用Athena查询它,而不会出现重复的行。本质上,我只想查询聚合数据的最新状态(这将只是最近传递到S3的文件的内容(。

我认为书签不起作用,因为增量交付包含以前文件中的数据,因此会产生重复。我知道,如果我在源存储桶中的所有文件上运行,我可以转换为数据帧并删除重复的数据:

spark_df = resolvechoice2.toDF()
spark_df = spark_df.dropDuplicates()

但这似乎会增加我每次对源表中的所有数据运行ETL的大量处理。

基本的工作流程是这样的,新文件被交付,也许可以使用Lambda来启动AWS Glue Job,它只处理该文件的内容,然后替换输出桶的内容。输出bucket是按年和月划分的。

最简单的方法是在每次运行时只启用书签并删除输出桶中的所有内容吗?

如果您的文件位于不同的文件夹中,您可以使用Athena的EXTERNAL TABLE并每天指向当前分区(例如使用Lambda(:-删除指向昨天文件夹的分区-添加指向今天文件夹的分区-在月底,您将分区指向最后一天(包含整个月的数据(。

这样,您就不需要任何重复数据消除过程,只需管理您的Athena分区即可。

最新更新