中央操作系统 |错误 apache spark 文件已经存在 Sparkcontext

CentOS | error apache spark file already exists Sparkcontext

我无法写入我创建的文件。在 windows 它工作正常。在centos中它说文件已经存在并且不写任何东西。

File tempFile= new File("temp/tempfile.parquet");
tempFile.createNewFile();
parquetDataSet.write().parquet(tempFile.getAbsolutePath());

错误如下:文件已存在

2020-02-29 07:01:18.007 ERROR 1 --- [nio-8090-exec-1] c.gehc.odp.util.JsonToParquetConverter   : Stack Trace: {}org.apache.spark.sql.AnalysisException: path file:/temp/myfile.parquet already exists.;
2020-02-29 07:01:18.007 ERROR 1 --- [nio-8090-exec-1] c.gehc.odp.util.JsonToParquetConverter   : sparkcontext close

spark默认保存模式为ErrorIfExists。这意味着如果你打算写入的文件名相同的文件已经存在,它会给出一个类似于你上面得到的异常。在您的情况下会发生这种情况,因为您是自己创建文件而不是让该任务产生火花。您可以通过两种方式解决问题:

1) 您可以在写入命令中将保存模式指定为 "overwrite" 或 "append":

parquetDataSet.write.mode("overwrite").parquet(tempFile.getAbsolutePath());

2) 或者,您可以简单地删除创建新文件命令并直接在您的 spark write 命令中传递目标路径,如下所示:

parquetDataSet.write.parquet("temp/tempfile.parquet");