pyspark unionByName 操作后的多个镶木地板文件

multiple parquet files after pyspark unionByName operation

我正在执行 unionByName 以将 3 个 py spark 数据帧合并到一个数据帧中。

df = df_array[0]
df = df.unionByName(df_array[1])
df = df.unionByName(df_array[2])
part_columns = ["part1","part2", "part3","part4"]
df.write.partitionBy(part_columns).mode('append').parquet(file_path)

我预计它会创建一个 parquet 文件,但它正在创建 3 个 parquet 文件。 我如何创建单个镶木地板文件?

您需要使用 coalescerepartition 来实现。在这种特定情况下,您可以通过

实现每个分区一个文件
df.repartition($"part_columns").write.partitionBy("part_columns").mode(SaveMode.Append).parquet(file_path)