首页 > 解决方案 > Apache Spark/AWS EMR 和处理文件的跟踪

问题描述

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

为此,我在 Scala 上实现了 Spark 作业,一切正常。我计划每周执行一次这项工作。

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

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

标签: amazon-web-servicesapache-sparkamazon-emr

解决方案


如果它是火花流工作,checkpointing是您正在寻找的,在这里讨论。

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

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


推荐阅读