我已经为这个问题做了很多研究,没有找到令人满意的答案。 我必须重命名我的输出文件来自火花。
目前我在S3中输出我的火花数据帧,然后我再次读取它,然后重命名并再次复制。 这个问题是我的火花工作需要16分钟才能完成,但是从S3读取然后在S3再次重命名和写入需要15分钟。
有什么方法可以重命名我的输出文件..我可以使用part-00000
这是我保存数据框的方式
dfMainOutputFinalWithoutNull.repartition(50).write.partitionBy("DataPartition", "PartitionYear")
.format("csv")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.option("nullValue", "")
.option("delimiter", "\t")
.option("quote", "\u0000")
.option("header", "true")
.option("codec", "bzip2")
.save(outputFileURL)
在这种情况下,如何使用hadoop文件格式?
目前我正在执行此操作,如下所示
val finalFileName = finalPrefix + DataPartitionName + "." + YearPartition + "." + intFileCounter + "." + fileVersion + currentTime + fileExtention
val dest = new Path(mainFileURL + "/" + finalFileName)
fs.rename(urlStatus.getPath, dest)
问题是我有50GB的输出数据并且它创建了非常庞大的文件,重命名这么多文件需要很长时间。
成本方面也很昂贵,因为我的EMR运行时间更长,再次复制数据需要额外费用。