首页 > 解决方案 > 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 作业,该作业仅处理该文件的内容,然后替换输出存储桶的内容。输出桶按年和月分区。

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

标签: apache-sparkaws-glue

解决方案


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

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


推荐阅读