#memory #pyspark
Вопрос:
Предположим, у меня есть исходный код, подобный этому:
my_function():
df = Spark.createDataFrame(Data, schema)
# some transformation inside this dataframe
df1 = transformation_1(df)
df2 = transformation_2(df1)
df3 = transformation_2(df2)
return df3
if __name__ == "__main__":
df = my_function()
df.collect()
Мой вопрос: является ли память, занятая df, df1 и f2, мусором, собранным после вызова функции df = my_function()? Или они останутся в памяти до тех пор, пока программа не завершится.
Ответ №1:
Технически, поскольку вы ничего не кэшируете, все df1, df2 и df3 будут созданы «на лету» и будут выпущены сразу после завершения программы. Другими словами, df = my_function()
не будет хранить данные в памяти.