Допустим, у нас есть следующий сценарий:
val df: DataFrame = dataframe
val df2 = df.partition(col("id").cache
...
some transformations/joins by "id" resulting `val dfTransformed`
...
val df3 = dfTransformed.groupBy("name").agg(<someaggregations>)
val df4 = df3.partition(col("id").cache
...
some transformations/joins by "id"...
...
Мой вопрос: нужно ли мне в какое-то время отключать df2? Или когда я сохраняю df4, он автоматически перезаписывает df2?
Если мне нужно unpersist df2, то когда его отменять?
Если я это сделаю:
val df3 = df2.groupBy("name").agg(<someaggregations>)
df2.unpersist
val df4 = df3.partition(col("id").cache
Не потеряю ли я производительность из-за удаления данных из памяти?
Если я это сделаю:
val df3 = df2.groupBy("name").agg(<someaggregations>)
val df4 = df3.partition(col("id").cache
df2.unpersist
Неужели я не опротестую df4 на самом деле?