从S3存储桶读取Spark数据帧,而另一个进程正在写入它?

时间:2018-09-20 20:54:11

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

读取spark数据帧并说通过Jupyter笔记本将其持久化以及另一个同时写入s3存储桶的进程是否会出现问题?

我读取了一个数据框,例如:

 s3 = spark.read.parquet('s3://path/to/table')

然后在笔记本上进行处理。

同时我在某个时候通过不同的过程将相同的s3存储桶写出来,例如

system('s3-dist-cp --src --dest s3://path/to/table)

这会证明是一个问题吗?我可以弄乱读取/数据帧,但我不想阻止将其写入存储桶。

1 个答案:

答案 0 :(得分:2)

这将导致您阅读的第一个DF上的任何操作均发生FNF异常。

 s3 = spark.read.parquet('s3://path/to/table')

上面涉及的第一个spark作业是列出叶子文件和目录。由于存在另一个正在写入/重写数据的过程,因此路径会过时。

此外,还应考虑S3的最终一致性行为。