df.coalesce(1) 是什么意思?

hog*_*kun 10 hdfs python-3.x apache-spark parquet

我将 Spark 与 Python 一起使用,所以我需要保存包含 Spark 结果的镶木地板文件

df
.coalesce(1)
.write
.save(save_path, format='parquet', mode='append'))
Run Code Online (Sandbox Code Playgroud)

这是收集数据并以 parquet 格式代码保存到 HDFS

所以我很好奇,如果我运行 Spark 大约 30 个 Parquet 文件,Spark 结果是否只保存一个 Parquet 文件

如果有人知道校长请教我这个代码对于仅保存一个镶木地板文件是否正确。

谢谢

小智 7

Coalesce使用现有分区来最大程度地减少混洗的数据量。


重新分区会创建新分区并进行完全洗牌。合并会产生具有不同数据量的分区(有时分区的大小差异很大),而重新分区会产生大小大致相等的分区。


操作性能而言,coalesce 更加高效。如果您可能需要相同大小的分区来进行进一步处理,则可以选择重新分区


对于您提供的示例,coalesce()是更好的选项,当您需要设置分区数 = 1 时,coalesce() 确实始终是最佳选项

您的代码是正确的,应该只能生成一个数据文件作为输出


小智 5

Coalesce 是一种对数据帧中的数据进行分区的方法。这主要用于减少数据帧中的分区数量

您可以参考此链接链接以获取更多详细信息coalescerepartition

是的,如果你使用df.coalesce(1)它,它只会写入一个文件(在你的情况下是一个镶木地板文件)