Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Amazon web services 附加时的拼花地板文件保护_Amazon Web Services_Pyspark_Parquet_Aws Glue - Fatal编程技术网

Amazon web services 附加时的拼花地板文件保护

Amazon web services 附加时的拼花地板文件保护,amazon-web-services,pyspark,parquet,aws-glue,Amazon Web Services,Pyspark,Parquet,Aws Glue,我在AWS上尝试对大量文件进行ETL时遇到了一个问题。 目标是将JSON文件转换为拼花文件。由于文件的大小,我不得不一批一批地做。假设我需要分15个批次完成,即15次单独运行才能转换所有批次 我正在使用write.mode(“append”).format(“parquet”)写入每个glue pyspark作业中的parquet文件 我的问题是,如果一个作业由于某种原因失败,那么我不知道该怎么办——一些分区更新了,而一些分区没有更新,批处理中的一些文件已经处理,而一些文件没有。例如,如果我的第

我在AWS上尝试对大量文件进行ETL时遇到了一个问题。 目标是将JSON文件转换为拼花文件。由于文件的大小,我不得不一批一批地做。假设我需要分15个批次完成,即15次单独运行才能转换所有批次

我正在使用
write.mode(“append”).format(“parquet”)
写入每个glue pyspark作业中的parquet文件

我的问题是,如果一个作业由于某种原因失败,那么我不知道该怎么办——一些分区更新了,而一些分区没有更新,批处理中的一些文件已经处理,而一些文件没有。例如,如果我的第九份工作失败了,我就有点卡住了。我不想删除所有拼花地板文件重新开始,但也不想只是重新运行第9个作业,并导致重复

如果整个作业成功,是否有办法保护拼花地板文件,只向其中添加新文件


谢谢

根据您的评论和我在这个问题上的类似经历,我相信这是因为S3最终的一致性。在这里看一下AmazonS3数据一致性模型

我们发现在冲突解决模式下使用分区暂存
s3a
committer
replace
使我们的工作不会失败。 在
spark
作业中尝试以下参数:

spark.hadoop.fs.s3a.committer.staging.conflict-mode替换
spark.hadoop.fs.s3a.committer.name已分区
另外,请阅读
提交人

希望这有帮助


另外,如果所有操作都失败,并且我们的文件不是太大,您可以使用黑客解决方案,在本地保存您的拼花地板文件,并在您的
spark
任务完成后上载,但我个人不建议这样做

您的存储是在S3中,还是在虚拟机的驱动器上,还是其他什么东西上?@napoleon_borntoparty S3。