Se você estiver disposto a usar seu próprio formato de saída personalizado, também poderá obter o comportamento desejado com RDD.
Dê uma olhada nas seguintes classes:
FileOutputFormat ,
FileOutputCommitter
No formato de saída de arquivo, você tem um método chamado checkOutputSpecs, que verifica se o diretório de saída existe. Em FileOutputCommitter você tem o commitJob, que normalmente está transferindo dados do diretório temporário para seu local final.
Eu não fui capaz de verificar ainda (faria isso, assim que tivesse alguns minutos livres), mas teoricamente: Se eu estender FileOutputFormat e substituir checkOutputSpecs para um método que não lança exceção no diretório já existe, e ajustar o O método commitJob do meu committer de saída personalizado para executar qualquer lógica que eu quiser (por exemplo, substituir alguns dos arquivos, anexar outros) do que eu posso conseguir atingir o comportamento desejado com RDDs também.
O formato de saída é passado para: saveAsNewAPIHadoopFile (que é o método saveAsTextFile chamado também para realmente salvar os arquivos). E o committer de saída é configurado no nível do aplicativo.