Freigeben über


repartitionByRange

Gibt einen neuen DataFrame zurück, der von den angegebenen Partitionierungsausdrücken partitioniert wird. Der resultierende DataFrame ist bereichspartitioniert.

Syntax

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

Parameter

Parameter Typ Beschreibung
numPartitions int kann ein Int sein, um die Zielanzahl von Partitionen oder eine Spalte anzugeben. Wenn es sich um eine Spalte handelt, wird sie als erste Partitionierungsspalte verwendet. Wenn nicht angegeben, wird die Standardanzahl der Partitionen verwendet.
cols str oder Column Partitionieren von Spalten.

Rückkehr

DataFrame: DataFrame neu partitioniert.

Hinweise

Es muss mindestens eine Partition nach Ausdruck angegeben werden. Wenn keine explizite Sortierreihenfolge angegeben wird, wird "aufsteigende Nullen zuerst" angenommen.

Aus Leistungsgründen verwendet diese Methode Sampling, um die Bereiche zu schätzen. Daher ist die Ausgabe möglicherweise nicht konsistent, da das Sampling unterschiedliche Werte zurückgeben kann. Die Beispielgröße kann durch die Konfiguration spark.sql.execution.rangeExchange.sampleSizePerPartitiongesteuert werden.

Beispiele

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