中央操作系统 |错误 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");
我无法写入我创建的文件。在 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");