返回由给定分区表达式分区的新 DataFrame。 生成的 DataFrame 按列标识符进行分区。
Syntax
repartitionById(numPartitions: int, *cols: "ColumnOrName")
参数
| 参数 | 类型 | Description |
|---|---|---|
numPartitions |
int | 分区的目标数。 |
cols |
str 或 Column | 分区列。 |
退货
DataFrame:重新分区的数据帧。
注释
必须至少指定一个按分区的表达式。 这类似于在分布区中重新分区,但会保留每个分区中的行的顺序。
这是一个实验 API。
示例
from pyspark.sql import functions as sf
spark.createDataFrame(
[(14, "Tom"), (23, "Alice"), (16, "Bob"), (18, "Alice"), (21, "Alice")],
["age", "name"]
).repartitionById(2, "name").select(
"age", "name", sf.spark_partition_id()
).show()
# +---+-----+--------------------+
# |age| name|SPARK_PARTITION_ID()|
# +---+-----+--------------------+
# | 14| Tom| 0|
# | 23|Alice| 1|
# | 18|Alice| 1|
# | 21|Alice| 1|
# | 16| Bob| 0|
# +---+-----+--------------------+