如果我们是从[dict或list]之类的python对象创建dataFrame的,即使python数据应该由GC收集,但就dataFrame而言,它仍然需要保留数据源。 因此,每个python对象都保存在解释器的内存中。如果此类对象确实很大,则可能会导致火花执行失败,因为python解释器无法获取足够的内存。我说的对吗?
def get_df():
# d should be collected by GC after leaving body of function
d = {'a': 1}
df = spark.createDataFrame(d)
return df
df = get_df()
# d still in memory of interpreter