Я задаю этот вопрос, потому что мое переименование S3
файлов, которые я генерирую с помощью spark
, происходит медленнее.Я сохраняю свой выходной файл в spark
, как показано ниже
val dfMainOutputFinalWithoutNull = dfMainOutputFinal.withColumnRenamed("concatenated", headerFinal)
dfMainOutputFinalWithoutNull.repartition(1).write.partitionBy("DataPartition")
.format("csv")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.option("nullValue", "")
.option("delimiter", "\t")
.option("quote", "\u0000")
.option("header", "true")
.save(outputFileURL)
После сохранения мне нужно переименовать файлы, сохраненные в S3
.Вот как я это делаю.
val file = fs.globStatus(new Path(outputFileURL + "/*/*"))
val finalPrefix = "Fundamental.Fundamental.Fundamental."
val fileVersion = "1."
val formatDate = new SimpleDateFormat("yyyy-MM-dd-hhmm")
val now = Calendar.getInstance().getTime
val finalFormat = formatDate.format(now)
val currentTime = finalFormat + "."
val fileExtention = "Full.txt"
for (urlStatus <- file) {
val DataPartitionName = urlStatus.getPath.toString.split("=")(1).split("\\/")(0).toString
val finalFileName = finalPrefix + DataPartitionName + "." + fileVersion + currentTime + fileExtention
val dest = new Path(mainFileURL + "/" + finalFileName)
fs.rename(urlStatus.getPath, dest)
}
println("File renamed and moved to dir now delete output folder")
myUtil.Utility.DeleteOuptuFolder(fs, outputFileURL)
Это переименование файлов занимает более 15 минут.У меня есть около 2k файлов общим размером 200 ГБ.Я что-то здесь не так делаю?
Есть ли способ лучше?