首页 > 解决方案 > Apache Spark AWS S3 跟踪已处理文件的状态

问题描述

我需要对存储在 AWS S3 上的文件执行定期批处理 ETL 作业。

为了不两次处理相同的文件,我需要将文件状态保存在某个地方,例如在某些 RDBMS 中。假设 AWS RDS for PostgreSQL。

例如,我将创建下表:

|file_name | status     |
|-----------------------|
|file1.csv | pending    |
|file2.json| pending    |

在 AWS EMR 应用程序上的 Apache Spark 的一开始,我将从提到的表中读取所有处于挂起状态的文件并 ETL。例如,当 ETLfile1.csv将完成时,我需要将其标记为completedPostgreSQL 表中。像这样的东西:

|file_name | status     |
|-----------------------|
|file1.csv | completed  |
|file2.json| pending    |

AFAIK,Spark 不支持UPDATEJDBC 操作,所以我认为我的系统设计可能有问题。如果是这样,您能否建议如何正确跟踪 S3 上已处理的文件,以便在新的 ETL 批处理运行时不再处理它们?

标签: apache-sparkamazon-s3amazon-emr

解决方案


推荐阅读