Если вы загрузите некоторые данные, вычислите DataFrame, запишите их на диск, а затем будете использовать DataFrame ... при условии, что они все еще не кэшируются в ОЗУ (допустим, их было недостаточно), Spark был бы достаточно умен. загружать данные с диска, а не пересчитывать DataFrame из исходных данных?
Например:
df1 = spark.read.parquet('data/df1.parquet')
df2 = spark.read.parquet('data/df2.parquet')
joined = df1.join(df2, df1.id == df2.id)
joined.write.parquet('data/joined.parquet')
computed = joined.select('id').withColummn('double_total', 2 * joined.total)
computed.write.parquet('data/computed.parquet')
При правильных обстоятельствах, когда мы сохраняем computed
, будет ли он загружать joined
DataFrame из data/joined.parquet
или он всегда будет повторно вычисляться путем загрузки / присоединения df1
/ df2
, если это не так в данный момент кешируем joined
?