返回由给定分区表达式分区的新 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|
# +---+-----+--------------------+