You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark写出DataFrame为CSV后如何重命名生成的part前缀文件

PySpark 重命名Spark输出的part前缀CSV文件实现方案

PySpark中同样可以通过调用Hadoop FileSystem接口实现文件重命名,和Scala版本逻辑一致,实现代码如下:

from org.apache.hadoop.fs import FileSystem, Path

# 获取Hadoop配置及FileSystem实例
hadoop_conf = spark._jsc.hadoopConfiguration()
fs = FileSystem.get(hadoop_conf)

# 手动指定源文件和目标路径方式
src_path = Path("csvDirectory/data.csv/part-00000-xxxx-xxxx-xxxx-xxxxxxxxxxxx-c000.csv")
dest_path = Path("csvDirectory/newData.csv")

if fs.exists(src_path):
    fs.rename(src_path, dest_path)
    # 重命名完成后可按需删除原输出目录
    # fs.delete(Path("csvDirectory/data.csv"), True)
else:
    print("源文件不存在,请检查路径配置")

如果不知道完整的part文件名,可以通过遍历目录自动匹配符合规则的文件:

output_dir = Path("csvDirectory/data.csv/")
file_status_list = fs.listStatus(output_dir)

for file_status in file_status_list:
    file_path = file_status.getPath()
    file_name = file_path.getName()
    # 匹配part前缀、csv后缀的文件
    if file_name.startswith("part-") and file_name.endswith(".csv"):
        fs.rename(file_path, Path("csvDirectory/newData.csv"))
        break

注意事项

  • 执行重命名前建议先对DataFrame执行df.coalesce(1).write.csv(输出目录)操作,保证输出目录下只有1个CSV文件,避免多文件匹配错误。
  • 上述代码支持本地文件路径和HDFS路径,无需额外适配不同存储介质。
  • 若业务场景需要输出多分区CSV文件,可遍历所有part文件后按业务规则逐个重命名即可。

内容的提问来源于stack exchange,提问作者NEERAJ GHATE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:39:01