data.rdd.getNumPartitions() # output 2456
然后我做了
data.rdd.repartition(3000)
但
data.rdd.getNumPartitions()
#输出仍为2456
如何更改分区数。一种方法可以是首先将DF转换为rdd,重新分区然后将rdd转换回DF。但这需要很多时间。 越来越多的分区是否使操作更加分散,因此更快? 谢谢
答案 0 :(得分:11)
您可以查看分区数:
data.rdd.partitions.size
更改分区数:
newDF = data.repartition(3000)
您可以查看分区数:
newDF.rdd.partitions.size
在重新分区时要小心数据随机播放,这很昂贵。如果需要,请查看coalesce
。
答案 1 :(得分:2)
print df.rdd.getNumPartitions()
# 1
df.repartitions(5)
print df.rdd.getNumPartitions()
# 1
df = df.repartitions(5)
print df.rdd.getNumPartitions()
# 5
请参阅火花:权威指南第5章-基本结构操作
ISBN-13:978-1491912218
ISBN-10:1491912219
答案 2 :(得分:1)
如果要增加分区数,可以使用repartition()
:
data = data.repartition(3000)
如果您想减少分区数,我建议您使用coalesce()
,这样可以避免完全洗牌:
用于过滤掉较大的内容后更有效地运行操作 数据集。
data = data.coalesce(10)