Aller au contenu principal

coalesce (DataFrame)

Retourne un nouveau DataFrame qui a exactement numPartitions partitions.

Syntaxe

coalesce(numPartitions: int)

parameter

parameter

Type

Description

numPartitions

int

spécifier le nombre cible de partitions.

parameter

Type

Description

numPartitions

int

spécifier le nombre cible de partitions.

Renvoie

DataFrame

Notes

Similaire à la coalescence 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 mélange, au lieu de cela, chacune des 100 nouvelles partitions revendiquera 10 des partitions actuelles. Si un nombre plus élevé de partitions est demandé, il restera au nombre actuel de partitions.

Cependant, si vous effectuez une agrégation drastique, par exemple à numPartitions = 1, votre calcul peut avoir lieu sur moins de nœuds que vous ne le souhaitez (par exemple, un seul nœud dans le cas de numPartitions = 1). Pour éviter cela, vous pouvez appeler repartition(). Cela ajoutera une étape de brassage, mais signifie que les partitions amont actuelles seront exécutées en parallèle (selon le partitionnement actuel).

Exemples

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