在 PySpark 中将数据帧写入 CSV 后重命名文件 [重复]

Posted

技术标签:

【中文标题】在 PySpark 中将数据帧写入 CSV 后重命名文件 [重复]【英文标题】:Rename files after writing dataframe as CSV in PySpark [duplicate] 【发布时间】:2021-08-24 08:54:59 【问题描述】:

我正在尝试使用 df.write.csv 将 parquet 文件写入 CSV,但输出的 CSV 文件有一个大名称(部分 -0000-),我该如何重命名它?

我搜索了一下,发现可以使用下面的代码在scala中完成。

import org.apache.hadoop.fs._
fs = FileSystem.get(spark.hadoopConfiguration)

fs = FileSystem.get(sc.hadoopConfiguration)
fs.rename(new Path("csvDirectory/data.csv/part-0000"), new Path("csvDirectory/newData.csv"))

在pyspark中怎么做?

【问题讨论】:

检查this 用python可以吗?提前感谢 如果你的dataframe不是很大,转换df后使用pandas.to_csv()toPandas,spark分部分写入数据是有原因的 【参考方案1】:

不能直接用 Spark 完成。 Scala 中的解决方案可以适应 Python:

fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())


def rename(old_file_name, new_file_name):
    fs.rename(
        spark._jvm.org.apache.hadoop.fs.Path(old_file_name),
        spark._jvm.org.apache.hadoop.fs.Path(new_file_name),
    )

【讨论】:

上述解决方案不适用于 pyspark 。请在打印之前告诉我是否有任何其他方法可以捕获它 @NEERAJGHATE 查看我的编辑 这是什么意思? @Steven 谢谢你 11 @thebluephantom 我正在尝试有效地提取镶木地板文件。还在学习!

以上是关于在 PySpark 中将数据帧写入 CSV 后重命名文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark - 将数据帧写入 2 个不同的 csv 文件

Pyspark 写入数据帧并将其保存到 csv 文件中会出现错误

PySpark:如何将具有 SparseVector 类型的列的 Spark 数据帧写入 CSV 文件?

在 PySpark 中写入镶木地板的问题

Pyspark 数据帧写入和读取更改架构

使用 PySpark 写入数据帧时出错