Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 通过Spark在S3前缀分区中回滚写入失败_Apache Spark_Amazon S3_Amazon Emr - Fatal编程技术网

Apache spark 通过Spark在S3前缀分区中回滚写入失败

Apache spark 通过Spark在S3前缀分区中回滚写入失败,apache-spark,amazon-s3,amazon-emr,Apache Spark,Amazon S3,Amazon Emr,我们通过EMR使用ApacheSpark(2.4.5)作业,它读取S3前缀{bucket}/{prefix}/*.json,进行一些数据处理,然后在覆盖模式下通过Spark作业save()将其重写回相同的{bucket}/{prefix}。我的问题是,如果Spark作业在将数据重新写入S3前缀分区时失败,那么是否有任何方法可以以任何原子/事务方式恢复该前缀分区中的数据。 spark/EMR/S3是否有/所有这些都支持它?spark会将新文件写入文件夹,因为群集节点同时写入文件,最好写入多个文件。

我们通过EMR使用ApacheSpark(2.4.5)作业,它读取S3前缀{bucket}/{prefix}/*.json,进行一些数据处理,然后在覆盖模式下通过Spark作业save()将其重写回相同的{bucket}/{prefix}。我的问题是,如果Spark作业在将数据重新写入S3前缀分区时失败,那么是否有任何方法可以以任何原子/事务方式恢复该前缀分区中的数据。
spark/EMR/S3是否有/所有这些都支持它?

spark会将新文件写入文件夹,因为群集节点同时写入文件,最好写入多个文件。因此,当您执行覆盖操作时,Spark将首先删除文件夹内容并写入结果

问题是Spark不会缓存整个原始数据,而只是缓存代码中所需的部分数据。如果将结果写入原始路径,则它将首先删除原始路径并将缓存结果写入文件夹


您可以使用append方法,但它将创建一些新文件,而不仅仅是将数据添加到原始文件中。Spark的设计目的不是这样的,在覆盖或失败时无法恢复。

您不能使用相同的路径写入结果。它将删除原件。