用自定义扩展名火花写入文件

问题描述 投票:-1回答:1

我有一个DataFrame,其中包含一行文本。我需要编写,而每个文件(来自每个DataFrame分区)都具有自定义扩展名.XYZ。目前,我正在使用以下代码编写文件:

dataFrame.write.text(outputPath)

但是,此代码写入具有默认扩展名的文件。目前,我想通过在写入文件后重命名文件来控制扩展名,我想通过编写具有所需扩展名的文件来优化扩展名。如何实现扩展名与默认扩展名不同的文件的写入?

apache-spark apache-spark-sql
1个回答
0
投票

您可以尝试对所有文件使用相同的扩展名。

df.write.format("csv/txt/parquest/etc").mode("overwrite").save("outputPath")

您可以为每个分区尝试不同的文件扩展名。

val files = List("abc.csv","bdc.txt")
  df.repartition(2).rdd.mapPartitionsWithIndex((idx,itr)=>itr.map(x=>(x,idx))).foreachPartition { itr => {
    if (itr.hasNext) {
      val lst=itr.toList
      val index = lst(0)._2
      val bw = new BufferedWriter(new FileWriter("abc." + extension(index)))
      val stringToWrite = lst.mkString("\n")

      bw.write(stringToWrite)
      bw.close()
    }
  }
  }
© www.soinside.com 2019 - 2024. All rights reserved.