Skip to main content
 首页 » 编程设计

python之从 Spark/Dataproc : How to write only one large file instead of it automatically splitting in to multiple 将 .txt 文件写入 GCS

2024年09月03日28dyllove98

我使用 Dataproc 运行 Pyspark 脚本,该脚本将数据帧写入谷歌云存储桶中的文本文件。当我运行包含大数据的脚本时,我的输出文件夹中会自动生成大量文本文件,但我只需要一个大文件。

我在这里阅读Spark saveAsTextFile() writes to multiple files instead of one我可以在 .write() 之前使用 .repartition(1) 来获取一个文件,但我希望它运行得更快(当然)所以我不想在执行 .write() 之前返回到一个分区。

df_plain = df.select('id', 'string_field1').write.mode('append').partitionBy('id').text('gs://evatest/output', compression="gzip") 

请您参考如下方法:

不要将 GCS 视为文件系统。 GCS 存储桶的内容是一组不可变的 blob(文件)。一旦写入,便无法更改。我的建议是让你的作业独立写入所有文件,最后聚合。有多种方法可以实现这一目标。

实现此目的的最简单方法是通过 gsutil compose 命令。

引用资料: