repartitionByRange

指定されたパーティション分割式によってパーティション分割された新しい 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|
# +---+-----+--------------------+