apache-spark - Spark 写入具有自定义扩展名的文件
问题描述
我有一个包含单行文本的 DataFrame。我需要写,而每个文件(来自每个 DataFrame 分区)都有自定义扩展名.XYZ
。目前,我正在使用以下代码编写文件:
dataFrame.write.text(outputPath)
但是,此代码使用默认扩展名写入文件。目前,我通过在写入文件后重命名文件来控制扩展名,我想通过编写具有所需扩展名的文件来优化它。如何实现以不同于默认扩展名的方式编写文件?
解决方案
您可以尝试对所有文件使用相同的扩展名。
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()
}
}
}
推荐阅读
- oracle-data-integrator - 使用 ODI 12c 在 UNIX 服务器中生成 csv 文件
- ruby - 如何在语句中显示答案
- sql - 为传入值动态输入 (SQL)
- cassandra - 在 Cassandra 中删除索引时出错
- java - 递归删除相邻的重复项
- c++ - 在 Windows 执行目标 TLS 回调之前注入 dll
- c# - 在 DDD 中创建核心模型时如何分离/解耦子项的实例创建
- reactjs - 无法在反应中更新父道具
- vb.net - 如何使用 SELECT CASE 和 TO 使用 INTEGER
- java - 使用 RemoteWebDriver 截屏