Добавить расширение к Spark Part Files - PullRequest
0 голосов
/ 14 декабря 2018

Я использую Spark / Scala для чтения набора данных xml-файлов, выполнения фильтрации и вывода xml-файлов.Конечно, spark выводит part-00XX, но мне бы хотелось, чтобы part-00XX.xml.Причина этого заключается в том, что нижестоящая программа читает файлы и специально ищет расширение .xml.

var writePath = new Path(baseWritePath, key) //baseWritePath here is an S3 bucket, but could be any base path.
dataframe.write.format("com.databricks.spark.xml").option("rootTag", "root").option("rowTag", "row").save(writePath)

Я надеялся, что в записывающей программе будет возможность сохранить файл с расширением, но, похоже, он несуществовать.Теперь я думаю, что лучший способ продвинуться вперед - это просто переименовать все файлы, но есть ли хороший способ сделать это с помощью Hasoop?

Я могу сразу подумать о том, чтобы как-то получитьсписок всех файлов в каталоге, перебрать его и переименовать файл.Кажется, что есть лучший способ сделать это с таким большим количеством файлов, но я не могу найти хороший способ с Hadoop.

val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
val files = fs.globStatus(new Path(writePath, "part*"))

files.foreach(file => fs.rename(file.getPath, new Path(writePath, file.getPath.getName + ".xml")))

Вышеприведенное только дает мне исключение Task Not Serializable.

Буду признателен за любую помощь, чтобы указать мне правильное направление.Спасибо.

...