【发布时间】:2021-11-03 08:03:25
【问题描述】:
我有一个包含 20 个分区的 spark 数据框 df,每个分区都有一天的数据。这就是说我的输入数据框已经按天进行了分区。我的目标是编写一个按天分区的镶木地板文件。如果我尝试以下命令:
df.repartition(5).write.mode("overwrite").partitionBy(['day']).parquet("path")
当我的输入数据帧已经分区时,发生了很多改组。请注意,此数据帧包含超过 10 亿行,并且由于洗牌而正在杀死我的执行程序。
有没有一种方法可以将每个分区按原样写入镶木地板文件而无需任何洗牌?
【问题讨论】:
-
通过使用coalesce(5),你正在减少分区的数量,在你的情况下,你不需要使用coalesce,只需删除它并尝试
-
@hprakash 没有合并,每天的分区数量非常少。无论如何,即使没有合并,仍然会发生很多改组,因为 spark 不知道我的输入数据已经按天分区。
标签: apache-spark pyspark