coalesce (DataFrame)

回傳一個新的 DataFrame,裡面有完全不同的 numPartitions 分割區。

語法

coalesce(numPartitions: int)

參數

參數 類型 說明
numPartitions int 指定目標分區數量。

退貨

DataFrame

Notes

類似於 RDD 上定義的 coalesce,此操作產生狹窄依賴關係,例如從 1000 個分割區增加到 100 個分割區,不會有洗牌,而是每個 100 個新分割區會佔用 10 個現有分割區。 如果請求的分割區數量增加,則會維持在目前的分割區數。

然而,如果你做的是大幅合併,例如將 numPartitions = 1,可能會導致計算在比你想要的節點數量少(例如 numPartitions = 1 的情況下,只有一個節點)。 為了避免這種情況,你可以呼叫 repartition()。 這會增加一個洗牌步驟,但代表目前的上游分割區會平行執行(依照目前的分割方式)。

Examples

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|
# +---------+