Apache Spark/AWS EMR 和已处理文件的跟踪

Apache Spark/AWS EMR and tracking of processed files

我有 AWS S3 文件夹,其中存储了大量 JSON 文件。我需要通过 Spark 使用 AWS EMR 对这些文件进行 ETL,并将转换存储到 AWS RDS 中。

我已经在 Scala 上为此目的实现了 Spark 作业,一切正常。我计划每周执行一次此作业。

外部逻辑有时会向 AWS S3 文件夹添加新文件,因此下次我的 Spark 作业开始时,我只想处理新的(未处理的)JSON 文件。

现在我不知道在哪里存储有关已处理 JSON 文件的信息,以便 Spark 作业可以决定要处理什么 files/folders。您能否告诉我使用 Spark/AWS 跟踪此更改的最佳做法是什么(以及如何)?

如果是spark streaming job,checkpointing就是你要找的,正在讨论

  • Checkpointing 将状态信息(即偏移量等)存储在 hdfs/s3 存储桶中,因此当作业再次启动时,spark 仅拾取未处理的文件.检查点在发生故障时也提供了更好的容错能力,因为状态由 spark 本身自动处理。

  • 再次检查点仅适用于 spark 作业的流模式。