5

我对这个问题做了很多研究,但没有找到令人满意的答案。我必须重命名来自 spark 的输出文件。

目前我在 S3 中输出我的 spark 数据帧,然后我再次读取它,然后重命名并再次复制。问题是我的 spark 工作需要 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 运行时间更长,并且再次复制数据需要额外费用。

4

0 回答 0