重命名书面CSV文件Spark

时间:2017-06-26 12:53:51

标签: apache-spark amazon-s3 apache-spark-sql spark-dataframe

我正在运行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/")

有没有办法在之后重命名文件,甚至直接用正确的名称保存?我已经找到了解决方案而且找不到多少。

谢谢

2 个答案:

答案 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/")