repartitionByRange

Returnerar en ny DataFrame som partitionerats av de angivna partitioneringsuttrycken. Den resulterande dataramen är partitionerad.

Syntax

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

Parameters

Parameter Type Beskrivning
numPartitions int kan vara en int för att ange målantalet partitioner eller en kolumn. Om det är en kolumn används den som den första partitioneringskolumnen. Om det inte anges används standardantalet partitioner.
cols str eller kolumn partitioneringskolumner.

Retur

DataFrame: Ompartitionerad DataFrame.

Notes

Minst ett partition-by-uttryck måste anges. När ingen explicit sorteringsordning anges antas "stigande null först".

På grund av prestandaorsaker använder den här metoden sampling för att uppskatta intervallen. Därför kanske utdata inte är konsekventa, eftersom sampling kan returnera olika värden. Exempelstorleken kan styras av konfigurationen spark.sql.execution.rangeExchange.sampleSizePerPartition.

Exempel

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