指定されたパーティション分割式によってパーティション分割された新しい DataFrame を返します。 結果の DataFrame は範囲がパーティション分割されます。
構文
repartitionByRange(numPartitions: Union[int, "ColumnOrName"], *cols: "ColumnOrName")
パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
numPartitions |
int | には、パーティションのターゲット数または列を指定する int を指定できます。 列の場合は、最初のパーティション分割列として使用されます。 指定しない場合は、既定のパーティション数が使用されます。 |
cols |
str または Column | パーティション分割列。 |
返品
DataFrame: 再パーティション分割されたデータフレーム。
メモ
少なくとも 1 つの partition-by 式を指定する必要があります。 明示的な並べ替え順序が指定されていない場合は、"昇順 nulls first" と見なされます。
パフォーマンス上の理由から、このメソッドはサンプリングを使用して範囲を推定します。 そのため、サンプリングによって異なる値が返される可能性があるため、出力に一貫性がない可能性があります。 サンプル サイズは、構成 spark.sql.execution.rangeExchange.sampleSizePerPartitionによって制御できます。
例示
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|
# +---+-----+--------------------+