首页 > 解决方案 > Spark 写入具有自定义扩展名的文件

问题描述

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

dataFrame.write.text(outputPath)

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

标签: apache-sparkapache-spark-sql

解决方案


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

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()
    }
  }
  }

推荐阅读