Spark S3最终一致性问题



我有几个Spark作业,可以向S3写入数据,也可以从S3读取数据。偶尔(大约每周一次,持续约3小时(,Spark作业会失败,但以下情况除外:

org.apache.spark.sql.AnalysisException: Path does not exist.

我发现这可能是由于S3中的一致性模型,在S3中列表操作最终是一致的。S3 Guard声称可以解决这个问题,但我所在的Spark环境不支持该实用程序。

有没有其他人遇到过这个问题,并找到了合理的处理方法?

  • 如果您正在使用AWS EMR,它们会提供一致的EMR
  • 如果您使用Databricks:它们在事务IO中提供了一致性机制
  • HDP和CDH船均配备S3Guard
  • 如果您正在运行自己的home-rolled spark堆栈,请转到Hadoop2.9+以获得S3Guard,甚至更好:Hadoop3.1用于零重命名S3A提交程序

否则:不要将S3作为工作的直接目的地。

最新更新