repartitionByRange

返回由给定分区表达式分区的新 DataFrame。 生成的 DataFrame 已分区。

Syntax

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

参数

参数 类型 说明
numPartitions int 可以是一个 int,用于指定分区或列的目标数。 如果它是列,它将用作第一个分区列。 如果未指定,则使用默认分区数。
cols str 或 Column 分区列。

退货

DataFrame:重新分区的数据帧。

备注

必须至少指定一个按分区的表达式。 如果未指定显式排序顺序,则假定“首先升空”。

由于性能原因,此方法使用采样来估计范围。 因此,输出可能不一致,因为采样可以返回不同的值。 示例大小可由配置 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|
# +---+-----+--------------------+