Если вы хотите использовать свой собственный формат вывода, вы также сможете добиться желаемого поведения с помощью RDD.
Взгляните на следующие классы:
FileOutputFormat ,
FileOutputCommitter
В формате вывода файла у вас есть метод с именем checkOutputSpecs, который проверяет, существует ли выходной каталог. В FileOutputCommitter у вас есть commitJob, который обычно передает данные из временного каталога в его окончательное место.
Я еще не смог это проверить (сделал бы это, как только у меня будет несколько свободных минут), но теоретически: если я расширю FileOutputFormat и переопределю checkOutputSpecs на метод, который не генерирует исключение в каталоге, который уже существует, и отрегулирую commitJob моего настраиваемого коммиттера вывода для выполнения любой логики, которую я хочу (например, переопределить некоторые файлы, добавить другие), чем я смогу достичь желаемого поведения с помощью RDD.
Формат вывода передается в: saveAsNewAPIHadoopFile (который также вызывается методом saveAsTextFile для фактического сохранения файлов). Коммиттер вывода настраивается на уровне приложения.