首页 > 解决方案 > 大型 Spark 数据帧的 Window Lag 函数性能不佳

问题描述

假设我们有一个非常大的 spark 数据框,我们希望在其中创建一个滞后列:

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,那么有没有不同的方法来提高这个任务的可伸缩性?

标签: apache-sparkpyspark

解决方案


推荐阅读