repartitionByRange

Devuelve una nueva trama de datos particionada por las expresiones de partición especificadas. El dataframe resultante tiene particiones de intervalo.

Sintaxis

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

Parámetros

Parámetro Tipo Descripción
numPartitions int puede ser un valor int para especificar el número de particiones de destino o una columna. Si es una columna, se usará como la primera columna de partición. Si no se especifica, se usa el número predeterminado de particiones.
cols str o columna columnas de creación de particiones.

Devoluciones

DataFrame: DataFrame repartitioned.

Notas

Se debe especificar al menos una expresión de partición por . Cuando no se especifica ningún criterio de ordenación explícito, se asume "primero valores NULL ascendentes".

Debido a motivos de rendimiento, este método usa el muestreo para calcular los intervalos. Por lo tanto, la salida puede no ser coherente, ya que el muestreo puede devolver valores diferentes. El tamaño de la muestra se puede controlar mediante la configuración spark.sql.execution.rangeExchange.sampleSizePerPartition.

Ejemplos

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