假设我们有一个非常大的火花数据帧,我们希望创建一个滞后列:
lag_df = df.withColumn('lag',func.lag(df['id'],1)
.over(Window.partitionBy().orderBy('id')))
+---+----+
| id| lag|
+---+----+
| 1|null|
| 2| 1|
| 3| 2|
| 4| 3|
| 5| 4|
. .
. .
我发现上述内容最终会在单个执行程序上运行。这适用于小型数据帧,但它根本不可扩展。 我们无法使用paritionBy ,那么是否有不同的方法来改善此任务的可扩展性?