【问题标题】:How to set filename while writing in Pyspark? [duplicate]在 Pyspark 中写入时如何设置文件名? [复制]
【发布时间】:2022-02-01 17:31:02
【问题描述】:

我正在使用以下代码将数据框保存到 csv:

df.write\
    .option("header",True) \
    .mode("overwrite") \
    .option("sep","|")\
    .format("csv") \
    .save("filepath")

这会将文件保存为 part-xxx-xx.csv

我想将文件保存为 Tablename.csv。如何做到这一点?

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    由于分区,在 spark 中写入文件时您无法提供文件名,但您可以使用 Hadoop Filesystem API 重命名您的分区。

    import org.apache.hadoop.conf.Configuration
    import org.apache.hadoop.fs.{FileSystem, Path}
    
    fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
    
    partCSV=new Path("/your-path-here/part-xxx-xx.csv")
    tablenameCSV= new Path("/your-path-here/Tablename.csv")
    
    //Rename a File
    fs.rename(partCSV,tablenameCSV)
    

    见:https://sparkbyexamples.com/spark/spark-rename-and-delete-file-directory-from-hdfs/

    【讨论】:

    • 您的解决方案所做的是创建一个 Tablename 文件夹,并在该文件夹内将 csv 文件保存为 part-xxx-xx.csv。我需要将 csv 文件本身命名为 Tablename.csv
    • 编辑了我的答案@Sandeepan
    猜你喜欢
    • 2018-05-10
    • 2011-12-13
    • 2022-10-07
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2017-09-27
    • 2020-10-01
    • 2018-02-27
    相关资源
    最近更新 更多