如上所述,我通过pyspark加载了经过训练的word2vec模型。
word2vec_model = Word2VecModel.load("saving path")
使用完之后,我想删除它,因为它将在单个节点上占用大量内存空间(我使用了findSynonyms函数,并且文档说应该只在本地使用)我尝试使用
del word2vec_model
gc.collect()
但似乎没什么意思。它不是rdd文件,我不能使用.unpersist()。我在文档中没有找到类似unload()的功能。
任何人都可以帮助我或给我一些建议吗?
您可以通过运行以下语句来确保py4j网关取消了对象的引用:
给word2vec_model
一个pyspark Transformer
:
spark
和SparkSession
:spark.sparkContext._gateway.detach(word2vec_model._java_obj)
sc
一个SparkContext
:sc._gateway.detach(word2vec_model._java_obj)
说明:
Transformer
,每个转换器都在私有JavaObject
属性中拥有_java_obj
的实例。 SparkContext
的py4j网关。detach
方法(JavaObject
的实例)