我正在运行spark 2.1,我想将带有结果的csv写入Amazon S3。 重新分区后,csv文件有一个很长的kryptic名称,我想将其更改为特定的文件名。
我正在使用databricks lib写入S3。
dataframe
.repartition(1)
.write
.format("com.databricks.spark.csv")
.option("header", "true")
.save("folder/dataframe/")
有没有办法在之后重命名文件,甚至直接用正确的名称保存?我已经找到了解决方案而且找不到多少。
谢谢
答案 0 :(得分:2)
您可以使用以下命令重命名输出文件。
dataframe.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save("folder/dataframe/")
import org.apache.hadoop.fs._
val fs = FileSystem.get(sc.hadoopConfiguration)
val filePath = "folder/dataframe/"
val fileName = fs.globStatus(new Path(filePath+"part*"))(0).getPath.getName
fs.rename(new Path(filePath+fileName), new Path(filePath+"file.csv"))
答案 1 :(得分:0)
您在此处提到的代码会返回一个单元。您需要确认Spark应用程序何时完成其运行(假设这是批处理案例),然后重命名
dataframe
.repartition(1)
.write
.format("com.databricks.spark.csv")
.option("header", "true")
.save("folder/dataframe/")