Freigeben über


Klammern (DataFrame)

Gibt einen neuen DataFrame zurück, der genau numPartitions Partitionen enthält.

Syntax

coalesce(numPartitions: int)

Parameter

Parameter Typ Beschreibung
numPartitions int Geben Sie die Zielanzahl der Partitionen an.

Rückkehr

DataFrame

Hinweise

Ähnlich wie bei einer RDD-Definition führt dieser Vorgang zu einer engen Abhängigkeit, z. B. wenn Sie von 1000 Partitionen zu 100 Partitionen wechseln, gibt es keinen Shuffle, statt jeder der 100 neuen Partitionen 100 der aktuellen Partitionen beansprucht 10 der aktuellen Partitionen. Wenn eine größere Anzahl von Partitionen angefordert wird, verbleibt sie bei der aktuellen Anzahl von Partitionen.

Wenn Sie jedoch eine drastische Koppierung durchführen, z. B. um numPartitions = 1, kann dies dazu führen, dass die Berechnung auf weniger Knoten erfolgt, als Sie möchten (z. B. einen Knoten im Fall von numPartitions = 1). Um dies zu vermeiden, können Sie repartition() aufrufen. Dadurch wird ein Shuffle-Schritt hinzugefügt, bedeutet jedoch, dass die aktuellen Upstreampartitionen parallel ausgeführt werden (je nach dem, was die aktuelle Partitionierung ist).

Beispiele

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