写入后立即从S3读回错误

问题描述 投票:0回答:1

有时,使用我在AWS上的spark程序,如果我将数据帧写入S3,然后将其读回,我会收到类似的错误

Caused by: java.io.FileNotFoundException: 
No such file or directory 
's3://mypath/part-00000-f788e0f4-2498-4230-85b0-30cab97fc2ea-c000.snappy.parquet'

但是当我看一下时,文件显然就在那里。之前我碰到过这个并通过在写入和回读之间进行3秒钟的休眠来解决它。有谁知道这里发生了什么?我认为在文件系统方面,将s3视为网络文件系统,是否有一些方法可以在我回读之前同步我对文件系统的看法?也许我应该睡3秒,然后执行aws s3 ls s3://mypath命令?

amazon-web-services apache-spark amazon-s3
1个回答
0
投票

这是因为S3的最终一致性。这是一个非常普遍的问题。

我可以想出两种方法来解决这个问题 -

  1. 写操作完成后和开始读操作​​前等待一段时间。这就是你已经在做的事情。
  2. 使用S3Guard。 This article详细解释了s3guard的工作原理以及它如何帮助预防EC问题。

推荐问答