我有几个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作为工作的直接目的地。