我有一个数据框,由于驱动程序的OOM,它在“选择”时失败:
数据帧如下:
df2=df1.withColumnRename()
.withColumn(...)
.withColumn(...)
在“转换”列表之后,然后选择:
df3=df2.select ()
然后应用“ Windows函数”:
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而失败。
但是,如果我在df5之后移动“ df3 = df2.select()”,则此操作将消失。 或者,如果我这样做:df3.cache(),此问题也将消失,但我不明白原因,因为“选择”是转换而不是操作,因此根本无法计算,那么为什么会有此错误?