Будет ли память фрейма данных, созданного в функции, освобождена после вызова функции в pyspark

#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() не будет хранить данные в памяти.