В Спарк, вы можете использовать saveAsNewAPIHadoopFile и установить mapreduce.output.basename параметр конфигурации Hadoop, чтобы изменить префикс (Просто «часть» префикс)
val hadoopConf = new Configuration()
hadoopConf.set("mapreduce.output.basename", "yourPrefix")
yourRDD.map(str => (null, str))
.saveAsNewAPIHadoopFile(s"$outputPath/$dirName", classOf[NullWritable], classOf[String],
classOf[TextOutputFormat[NullWritable, String]], hadoopConf)
Ваши файлы будут по имени как: yourPrefix-т-00001
В Hadoop и Спарк, вы можете иметь более одного файла на выходе, так как вы можете иметь более одного редуктора (Hadoop) или более одного раздела (искры) , Затем вам нужно гарантировать уникальные имена для каждого из них, поэтому невозможно переопределить порядковый номер в последней части имени файла.
Но если вы хотите иметь больше контроля над вашим именем файла, вы можете продлить TextOutputFormat или FileOutputFormat и переопределить методgetUniqueFile.
Возможный дубликат [Переименование файлов частей в Hadoop Map Reduce] (http://stackoverflow.com/questions/14555313/renaming-part-files-in-hadoop-map-reduce) –
Лучше всего это сделать, используя вместо Spark. Например, вы могли бы собрать все в 1 файл, используя 'coalesce', но это накладывает нагрузку на память. Кроме того, hdfs работает немного иначе, чем обычная файловая система, и Spark всегда создает другую папку назначения/папки для каждого вывода. – GameOfThrows
разве это не ... https://gist.github.com/mlehman/df9546f6be2e362bbad2 –