Я использую 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.
Буду признателен за любую помощь, чтобы указать мне правильное направление.Спасибо.