CentOS | ошибка apache искровой файл уже существует Sparkcontext - PullRequest
0 голосов
/ 29 февраля 2020

Я не могу записать в файл, который я создаю. В 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

1 Ответ

1 голос
/ 02 марта 2020

Стандартный режим сохранения в spark - ErrorIfExists. Это означает, что если файл с тем же именем файла, который вы намереваетесь записать, уже существует, он выдаст исключение, подобное тому, которое вы получили выше. Это происходит в вашем случае, потому что вы создаете файл самостоятельно, а не оставляете эту задачу для запуска. Есть 2 способа, которыми вы можете разрешить ситуацию:

1) Вы можете указать savemode как «перезаписать» или «добавить» в команде записи:

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

2) Или , вы можете просто удалить команду создания нового файла и сразу передать путь назначения в вашей команде спарк-записи следующим образом:

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