【发布时间】:2019-07-19 12:11:55
【问题描述】:
我正在尝试对我的 DataFrame 进行分区并将其写入 parquet 文件。在我看来,重新分区适用于内存中的数据帧,但不影响镶木地板分区。更奇怪的是,coalesce 起作用了。假设我有 DataFrame df:
df.rdd.partitions.size
4000
var df_new = df.repartition(20)
df_new.rdd.partitions.size
20
但是,当我尝试编写 parquet 文件时,我得到以下信息:
df_new.write.parquet("test.paruqet")
[Stage 0:> (0 + 8) / 4000]
这将创建 4000 个文件,但是,如果我这样做,我会得到以下结果:
var df_new = df.coalesce(20)
df_new.write.parquet("test.paruqet")
[Stage 0:> (0 + 8) / 20]
我可以得到我想要减少分区的东西。问题是当我需要增加我无法做到的分区数量时。就像如果我有 8 个分区并且我尝试将它们增加到 100,它总是只写 8 个。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: scala apache-spark