Neo*_*Neo 9 machine-learning bigdata apache-spark apache-spark-sql pyspark
data.rdd.getNumPartitions() # output 2456
Run Code Online (Sandbox Code Playgroud)
然后我这样做
data.rdd.repartition(3000)
但
data.rdd.getNumPartitions()#outout仍然是2456
如何更改分区数量.一种方法可以是首先将DF转换为rdd,重新分区然后将rdd转换回DF.但这需要很多时间.越来越多的分区是否使操作更加分散,因此更快?谢谢
Mic*_*may 14
您可以检查分区数量:
data.rdd.partitions.size
Run Code Online (Sandbox Code Playgroud)
要更改分区数:
newDF = data.repartition(3000)
Run Code Online (Sandbox Code Playgroud)
您可以检查分区数量:
newDF.rdd.partitions.size
Run Code Online (Sandbox Code Playgroud)
在重新分区时要小心数据随机播放,这很昂贵.coalesce如果需要,看看.
小智 10
print df.rdd.getNumPartitions()
# 1
df.repartition(5)
print df.rdd.getNumPartitions()
# 1
df = df.repartition(5)
print df.rdd.getNumPartitions()
# 5
Run Code Online (Sandbox Code Playgroud)
请参阅Spark:
权威指南第 5 章 - 基本结构操作ISBN-13:978-1491912218
ISBN-10:1491912219
如果你想增加分区数量,你可以使用repartition():
data = data.repartition(3000)
Run Code Online (Sandbox Code Playgroud)
如果您想减少分区数量,我建议您使用coalesce(),以避免完全洗牌:
对于过滤大型数据集后更有效地运行操作很有用。
data = data.coalesce(10)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅文章如何有效地重新分区 Spark DataFrames
| 归档时间: |
|
| 查看次数: |
15475 次 |
| 最近记录: |