作为Pyspark的一部分 - 取消持久化父数据帧也会从缓存中删除子数据帧,提到如果我们取消保留parentDF,那么所有childDF也将被取消持久化。
我正在观察当地不同的 unpersist 行为。 如果我取消保留parentDF,那么childDF仍然会被缓存。
1. val inputPath = "C:\\code\\Test\\SparkTest\\weather.parquet"
2. val parentDF = sparkSession.read.parquet(inputPath).persist()
3. parentDF.show(false) // At this point parentDF will be computed and persisted
4. val childDF = parentDF.filter("RainTomorrow == 'Yes'").persist()
5. childDF.show(false) // At this point childDF will be computed and persisted
6. parentDF.unpersist() // Unpersisting the parentDF
7. val grandChildDF = childDF.filter("RainToday == 'Yes'")
8. grandChildDF.show(false) // At this point, in yarn-ui, childDF is still there in https://i.sstatic.net/269tsfXM.png
重点是,级联不持久仅在您的子数据帧未单独缓存时发生在 Spark 中,
我看得出你做到了
val childDF = parentDF.filter("RainTomorrow == 'Yes'").persist()
现在的问题是数据帧何时发生持久化?