将Spark DataFrame存储为.csv时重命名文件

时间:2018-08-29 14:36:59

标签: apache-spark apache-spark-sql azure-storage-blobs

我目前正在将Spark DataFrame作为.csv文件存储在Azure上的Blob存储中。我正在使用以下代码。

 smtRef2_DF.dropDuplicates().coalesce(1).write
  .mode("overwrite")
  .format("com.databricks.spark.csv")
  .option("header", "true")
  .save(csvBlobStorageMount + "/Output/Smt/SmtRef.csv")

这有效,但是会创建一个SmtRef.csv文件夹,实际的.csv文件在其中存储为part-00000-tid.csv。如何指定实际.csv文件的名称?

预先感谢

2 个答案:

答案 0 :(得分:1)

如果文件足够小以适合内存,一种解决方法是将其转换为pandas数据框并从那里另存为csv。

df_pd = df.toPandas()
df_pd.to_csv("path")

答案 1 :(得分:0)

Spark API无法实现。

如果要实现此目的,请使用.repartition(1)生成一个PART文件,然后使用Hadoop文件系统api重命名HDFS中的文件

导入org.apache.hadoop.fs._ FileSystem.get(spark.sparkContext.hadoopConfiguration())。rename(新路径(“ oldpathtillpartfile”),新路径(“ newpath”))