Pyspark 使用自定义名称将 DataFrame 写入 S3 中的 csv 文件

Pyspark write a DataFrame to csv files in S3 with a custom name

我正在使用如下代码将文件写入 S3 存储桶:

df.write.format('csv').option('header','true').mode("append").save("s3://filepath")

这会根据需要将多个文件输出到 S3 存储桶,但每个部分都有一个长文件名,例如:

part-00019-tid-5505901395380134908-d8fa632e-bae4-4c7b-9f29-c34e9a344680-236-1-c000.csv

有没有办法将其写成自定义文件名,最好是在 PySpark 写入函数中?如:

part-00019-my-output.csv

仅使用 Spark 无法做到这一点。后面的长随机数是为了确保没有重复,当有很多执行者试图在同一位置写入文件时,不会发生覆盖。

您必须使用 AWS SDK 来重命名这些文件。

P/S:如果你想要一个单独的CSV文件,你可以使用coalesce。但是文件名还不能确定。

df.coalesce(1).write.format('csv')...