pyspark 合并覆盖为一个具有固定名称的文件

pyspark coalesce overwrite as one file with fixed name

我们需要自动化管道。

我的要求是generate/overwrite一个使用固定名称的pyspark的文件

然而,我当前的命令是-

final_df.coalesce(1).write.option("header", "true").csv("s3://finalop/" , mode="overwrite")

这确保目录 (finalop) 相同,但每次我覆盖它时,此目录中的文件总是使用不同的名称创建。

现在,读取它的下一个作业不在 pyspark 中,因此我们无法自动化管道。 我们正在尝试让它读取目录的方法。

但是在 pyspark 中有没有办法生成一个固定文件,比如 -

final_df.coalesce(1).write.option("header", "true").csv("s3://finalop/final.csv" , mode="overwrite")

spark 将始终创建一个文件夹,其中包含文件(每个工作人员一个文件)。即使使用 coalesce(1),它也会创建至少 2 个文件,即数据文件 (.csv) 和 _SUCESS 文件。如果你想让你的文件在 S3 上具有特定名称 final.csv,你需要执行一些 S3 命令(例如在 python 中使用 BOTO3)或使用 CLI 界面。

S3 的问题是您不能简单地重命名您的文件,您必须重新创建它(复制到新名称并删除旧名称)因为系统是基于 KEY/VALUE 并且不允许密钥正在重命名。