Condividi tramite


repartitionByRange

Restituisce un nuovo dataframe partizionato dalle espressioni di partizionamento indicate. Il dataframe risultante è partizionato.

Sintassi

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

Parametri

Parametro Tipo Descrizione
numPartitions int può essere un valore int per specificare il numero di partizioni di destinazione o una colonna. Se si tratta di una colonna, verrà usata come prima colonna di partizionamento. Se non specificato, viene utilizzato il numero predefinito di partizioni.
cols str o Column partizionamento delle colonne.

Restituzioni

DataFrame: dataframe ripartizionato.

Note

È necessario specificare almeno un'espressione partition-by. Quando non viene specificato alcun ordine di ordinamento esplicito, si presuppone che venga utilizzato "valori Null crescente per primi".

Per motivi di prestazioni questo metodo usa il campionamento per stimare gli intervalli. Di conseguenza, l'output potrebbe non essere coerente, poiché il campionamento può restituire valori diversi. Le dimensioni del campione possono essere controllate dalla configurazione spark.sql.execution.rangeExchange.sampleSizePerPartition.

Examples

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