coalesce (DataFrame)

Retourne un nouveau DataFrame qui comporte exactement numPartitions des partitions.

Syntaxe

coalesce(numPartitions: int)

Paramètres

Paramètre Type Description
numPartitions int spécifiez le nombre cible de partitions.

Retours

DataFrame

Remarques

Comme pour la fusion définie sur un RDD, cette opération entraîne une dépendance étroite, par exemple si vous passez de 1 000 partitions à 100 partitions, il n’y aura pas de shuffle, au lieu de chacune des 100 nouvelles partitions revendication 10 des partitions actuelles. Si un plus grand nombre de partitions est demandé, il reste au nombre actuel de partitions.

Toutefois, si vous effectuez une fusion radicale, par exemple pour numPartitions = 1, cela peut entraîner la mise en place de votre calcul sur moins de nœuds que vous le souhaitez (par exemple, un nœud dans le cas de numPartitions = 1). Pour éviter cela, vous pouvez appeler repartition(). Cela ajoute une étape aléatoire, mais signifie que les partitions en amont actuelles sont exécutées en parallèle (par rapport au partitionnement actuel).

Exemples

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