【问题标题】:Apache Spark/AWS EMR and tracking of processed filesApache Spark/AWS EMR 和处理文件的跟踪
【发布时间】:2018-10-16 02:02:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: amazon-web-services apache-spark amazon-emr


    【解决方案1】:

    如果是 Spark Streaming 工作,checkpointing 就是你要找的,讨论here

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

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

    【讨论】:

    • 谢谢!批呢?在批处理作业的情况下,必须在 Spark 之外处理有关已处理文件的信息?
    • 我没有看到任何开箱即用的 spark 功能,您使用哪个客户端从 s3 读取,您能否检查该客户端是否提供接收 start-after 的能力,如 @987654322 所述@ 以便您可以从之前运行的作业中获取最后处理的密钥并将其缓存。
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 2018-03-19
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多