repartitionByRange

Retourne un nouveau DataFrame partitionné par les expressions de partitionnement données données. Le DataFrame résultant est partitionné.

Syntaxe

repartitionByRange(numPartitions: Union[int, "ColumnOrName"], *cols: "ColumnOrName")

Paramètres

Paramètre Type Description
numPartitions int peut être un int pour spécifier le nombre cible de partitions ou d’une colonne. S’il s’agit d’une colonne, elle sera utilisée comme première colonne de partitionnement. S’il n’est pas spécifié, le nombre par défaut de partitions est utilisé.
cols str ou colonne partitionnement de colonnes.

Retours

DataFrame: DataFrame repartitionné.

Remarques

Au moins une expression partition par doit être spécifiée. Lorsqu’aucun ordre de tri explicite n’est spécifié, « les valeurs null croissants commencent par » est supposé.

En raison des raisons de performances, cette méthode utilise l’échantillonnage pour estimer les plages. Par conséquent, la sortie peut ne pas être cohérente, car l’échantillonnage peut retourner des valeurs différentes. La taille de l’exemple peut être contrôlée par la configuration spark.sql.execution.rangeExchange.sampleSizePerPartition.

Exemples

from pyspark.sql import functions as sf
spark.createDataFrame(
    [(14, "Tom"), (23, "Alice"), (16, "Bob")], ["age", "name"]
).repartitionByRange(2, "age").select(
    "age", "name", sf.spark_partition_id()
).show()
# +---+-----+--------------------+
# |age| name|SPARK_PARTITION_ID()|
# +---+-----+--------------------+
# | 14|  Tom|                   0|
# | 16|  Bob|                   0|
# | 23|Alice|                   1|
# +---+-----+--------------------+