pyspark.sql.DataFrame.coalesce

DataFrame. coalesce ( numPartitions : int ) → pyspark.sql.dataframe.DataFrame [source]

返回一个具有确切 numPartitions 分区的新 DataFrame

类似于在 RDD 上定义的 coalesce,此操作会产生一个窄依赖,例如,如果你从 1000 个分区变为 100 个分区,将不会发生洗牌,而是每个新的 100 个分区将声明当前分区的 10 个。如果请求的分区数量更大,它将保持在当前的分区数量。

然而,如果你正在进行大幅度的合并,例如将numPartitions设置为1,这可能会导致你的计算在比预期更少的节点上进行(例如,在numPartitions = 1的情况下,只有一个节点)。为了避免这种情况,你可以调用repartition()。这将增加一个洗牌步骤,但意味着当前的上游分区将并行执行(根据当前的分区情况)。

新增于版本 1.4.0。

在版本 3.4.0 中更改: 支持 Spark Connect。

Parameters
numPartitions int

指定目标分区数量

Returns
DataFrame

示例

>>> df = spark.range(10)
>>> df.coalesce(1).rdd.getNumPartitions()
1