У меня есть один фрейм данных, и он «сбивается» из-за OOM драйвера:
Фрейм данных выглядит следующим образом:
df2=df1.withColumnRename()
.withColumn(...)
.withColumn(...)
после списка Преобразования, а затем я выберите:
df3=df2.select ()
, затем примените «windows function»:
window = Window.partitionBy(col("PK")).orderBy(col("create_ts").desc())
df5=df3.withColumn("rn",row_number().over(window)).where(col("rn") == 1).drop("rn")
В конце концов задание не выполнится из-за OOM водителя.
однако, если я перееду «df3 = df2.select ()» после df5, тогда это будет go прочь. или если я сделаю: df3.cache (), эта проблема также исчезнет go, но я не понимаю причину, потому что «select» - это преобразование, а не действие, поэтому оно вообще не вычисляется, тогда зачем эта ошибка?