Spark пишет файлы с пользовательским расширением - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть DataFrame, который содержит одну строку текста. Мне нужно написать, в то время как каждый файл (из каждого раздела DataFrame) имеет пользовательское расширение .XYZ. В настоящее время я использую следующий код для записи файлов:

dataFrame.write.text(outputPath)

Однако этот код записывает файлы с расширением по умолчанию. В настоящее время я контролирую расширение, переименовывая файлы после записи, и я хотел бы оптимизировать это, записывая файлы с необходимым расширением. Как я могу добиться записи файла с расширением, отличным от значения по умолчанию?

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете попробовать это для того же расширения для всех файлов.

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