repartitionByRange

Retourneert een nieuw DataFrame dat is gepartitioneerd door de opgegeven partitioneringsexpressies. Het resulterende DataFrame is gepartitioneerd.

Syntaxis

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

Parameterwaarden

Kenmerk Typ Beschrijving
numPartitions int kan een int zijn om het doelaantal partities of een kolom op te geven. Als het een kolom is, wordt deze gebruikt als de eerste partitioneringskolom. Als dit niet is opgegeven, wordt het standaardaantal partities gebruikt.
cols str of Column partitionering van kolommen.

Retouren

DataFrame: Opnieuw gepartitioneerd DataFrame.

Aantekeningen

Er moet ten minste één partitie-by-expressie worden opgegeven. Wanneer er geen expliciete sorteervolgorde is opgegeven, wordt 'oplopend null'-teken als eerste aangenomen.

Vanwege prestatieredenen gebruikt deze methode steekproeven om de bereiken te schatten. Daarom is de uitvoer mogelijk niet consistent, omdat steekproeven verschillende waarden kunnen retourneren. De steekproefgrootte kan worden beheerd door de configuratie 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|
# +---+-----+--------------------+