Si está dispuesto a utilizar su propio formato de salida personalizado, también podrá obtener el comportamiento deseado con RDD.
Eche un vistazo a las siguientes clases:
FileOutputFormat ,
FileOutputCommitter
En formato de salida de archivo, tiene un método llamado checkOutputSpecs, que verifica si existe el directorio de salida. En FileOutputCommitter tiene el commitJob que generalmente transfiere datos desde el directorio temporal a su lugar final.
No pude verificarlo todavía (lo haría, tan pronto como tenga unos minutos libres) pero teóricamente: si extiendo FileOutputFormat y anulo checkOutputSpecs a un método que no arroja una excepción en el directorio ya existe, y ajusto el El método commitJob de mi committer de salida personalizado para realizar cualquier lógica que desee (por ejemplo, anular algunos de los archivos, agregar otros), de lo que también puedo lograr el comportamiento deseado con los RDD.
El formato de salida se pasa a: saveAsNewAPIHadoopFile (que es el método llamado saveAsTextFile para guardar los archivos). Y el confirmador de salida se configura en el nivel de la aplicación.