coalesce (DataFrame)

返回具有完全 numPartitions 分区的新 DataFrame。

Syntax

coalesce(numPartitions: int)

参数

参数 类型 说明
numPartitions int 指定分区的目标数。

退货

DataFrame

备注

与在 RDD 上定义的合并类似,此操作会导致一个狭窄的依赖项,例如,如果从 1000 个分区转到 100 个分区,则不会有随机分配,而 100 个新分区中的每个分区都将声明当前分区中的 10 个。 如果请求了更多分区,它将保持在当前分区数。

但是,如果要进行大幅合并(例如 numPartitions = 1),则可能会导致计算发生在比你喜欢的节点上少(例如,numPartitions = 1 的情况下的一个节点)。 若要避免这种情况,可以调用重新分区()。 这将添加随机步骤,但表示当前上游分区将并行执行(无论当前分区是什么)。

示例

from pyspark.sql import functions as sf
spark.range(0, 10, 1, 3).coalesce(1).select(
    sf.spark_partition_id().alias("partition")
).distinct().sort("partition").show()
# +---------+
# |partition|
# +---------+
# |        0|
# +---------+