我有一个AWS S3文件夹,用于存储大量JSON文件。我需要使用Spark上的AWS EMR来ETL这些文件,并将转换存储到AWS RDS中。
为此,我已经在Scala上实现了Spark作业,并且一切正常。我计划每周执行一次这项工作。
外部逻辑会不时地将新文件添加到AWS S3文件夹中,因此,下次我的Spark作业启动时,我只想处理新的(未处理的)JSON文件。
现在,我不知道有关已处理JSON文件的信息的存储位置,因此Spark作业可以确定要处理的文件/文件夹。您能告诉我使用Spark / AWS跟踪此更改的最佳实践是什么(以及如何)?
答案 0 :(得分:1)
如果这是火花流式作业,checkpointing
是您所需要的,将在here中进行讨论。
Checkpoint
ing将状态信息(例如,偏移量等)存储在hdfs / s3存储桶中,因此,当再次启动作业时,spark仅拾取未处理的文件。在发生故障的情况下,检查点还提供了更好的容错能力,因为状态是由火花本身自动处理的。
再次检查点仅在spark作业的流模式下起作用。