在写入之前合并(1)数据帧对性能有任何影响吗?

Hah*_*pro 0 hdfs dataframe apache-spark parquet

在我将数据帧写入 hdfs 之前,我coalesce(1)让它只写入一个文件,因此在复制内容时可以轻松手动处理内容,从 hdfs 获取,...

我会像这样编写输出。

outputData.coalesce(1).write.parquet(outputPath)
Run Code Online (Sandbox Code Playgroud)

(输出数据是org.apache.spark.sql.DataFrame)

我想问一下它们是否对性能有任何影响而不是合并

outputData.write.parquet(outputPath)
Run Code Online (Sandbox Code Playgroud)

Hah*_*pro 6

是的,它会用 1 个工人来写入。

因此,即使您提供 10 个 CPU 核心,它也会使用 1 个工作线程(单个分区)进行写入。

如果您的文件很大(10 GB 或更大),则会出现问题。但如果您的文件较小(100 mb),建议您使用