rdd.saveAsHadoopFile () выдает ошибку «Выходной каталог уже существует», если для параметра deploy-mode установлено значение «cluster» - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над приложением, которое я перенес с spark 1.6 (scala 2.10.5) на spark 2.1 (scala 2.11.8).Мне пришлось выполнить миграцию за короткое время, поэтому я попытался изменить то, что было строго необходимо, чтобы приложение работало, как и раньше.

Я продолжал использовать org.apache.spark.rdd.RDD API вместо переключения на org.apache.spark.sql.SparkSession , поскольку я смог скомпилировать и запустить его таким образом.

Мое приложение работает нормально, производя точно то же самоевывод как и раньше, но у меня проблема.В момент сохранения вывода через метод rdd.saveAsHadoopFile (outputPath, ...) я получаю сообщение о том, что outputPath уже существует.Я уверен, что это не так, поскольку я удаляю каталог вывода перед запуском кода.

Странно то, что вывод все еще создается, и он точно так и должен быть, но я получаю сообщение об ошибке каждыйвремя и моя работа искры регистрируются как неудачные, чего я хотел бы избежать.

Еще одна интересная вещь заключается в том, что я получаю эту ошибку только при запуске задания в режиме кластера (например): spark-submit ... --master yarn --deploy-mode cluster

, но не когда я запускаю его в режиме клиента (например): spark-submit ... --master yarn --deploy-mode client

Другой момент заключается в том, что то же задание в режиме кластера позволяет создавать файлы с помощью метода rdd.saveAsTextFile (outputPath) без генерации ошибки.

Я хотел бы запустить приложение в режиме кластера и устранитьсообщение об ошибке.Заранее благодарим за каждое предложение!

...