java—从不同spark会话并发写入s3失败,并出现filenotfound异常

5kgi1eie  于 2021-05-29  发布在  Spark
关注(0)|答案(0)|浏览(351)

我正在尝试开发一个示例java应用程序,它使用spark从sql服务器读取数据并将数据包写入amazons3。我使用spark3.0.0和s3a提交程序将数据写入s3。
当我按顺序写入数据包时,应用程序运行良好。
如果我开始使用多个spark会话并发地向s3写入数据,我就会遇到问题

java.io.FileNotFoundException: File 
file:/C:/Users/Administrator/tmp/staging/P_1000_16_1_1_4/Administrator/local-1593170705751/staging-uploads/_temporary/0 does not exist

下面是我为每个会话设置的配置

parkContext.hadoopConfiguration().set("fs.s3a.committer.name", "directory");
sparkContext.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem");
sparkContext.hadoopConfiguration().set("fs.s3a.committer.staging.conflict-mode", "append");
sparkContext.hadoopConfiguration().set("mapreduce.outputcommitter.factory.scheme.s3a","org.apache.hadoop.fs.s3a.commit.staging.PartitionedStagingCommitterFactory");
sparkContext.hadoopConfiguration().set("fs.s3a.fast.upload.active.blocks","5");
sparkContext.hadoopConfiguration().set("fs.s3a.block.size","100M");
sparkContext.hadoopConfiguration().set("fs.s3a.fast.upload.buffer", "bytebuffer");
sparkContext.hadoopConfiguration().set("fs.s3a.committer.staging.tmp.path", "tmp/staging/" + currentPacket);
sparkContext.hadoopConfiguration().set("mapreduce.fileoutputcommitter.algorithm.version", "2");

非常感谢您的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题