我正在用PySpark处理按A列分区的数据。
现在,我需要在另一列“B”上使用窗口函数来获取此帧的最大值,并为新条目计数。
如here所示,“此外,用户可能希望确保在排序和计算帧之前,将类别列具有相同值的所有行收集到同一台计算机上。"
在应用窗口之前,我需要手动地按列“B”重新划分数据吗?还是Spark会自动地这样做?
即我是否必须:
data = data.repartition("B")
之前:
w = Window().partitionBy("B").orderBy(col("id").desc())
多谢了!
1条答案
按热度按时间zbdgwd5y1#
如果您使用
Window.partitionBy(someCol)
,那么如果您没有为shuffle partitions参数设置值,那么分区将默认为200。类似但不相同的帖子应提供指导。spark.sql.shuffle.partitions of 200 default partitions conundrum
因此,简而言之,您不需要明确地执行重新分区,shuffle partitions参数更相关。