当我们基于列对 PySpark 数据帧进行重新分区时会发生什么。例如
dataframe.repartition('id')
这是否会将具有相似分区的数据移动'id'
到同一分区?该值如何spark.sql.shuffle.partitions
影响重新分区?
当我们基于列对 PySpark 数据帧进行重新分区时会发生什么。例如
dataframe.repartition('id')
这是否会将具有相似分区的数据移动'id'
到同一分区?该值如何spark.sql.shuffle.partitions
影响重新分区?
的默认值为spark.sql.shuffle.partitions
200,并配置在为连接或聚合打乱数据时使用的分区数。
dataframe.repartition('id')
根据 Hash Partitioner 创建 200 个 ID 分区。具有相同 ID 的 Dataframe Row 总是进入同一个分区。如果某些 ID 上有 DataSkew,您最终会得到大小不一致的分区。