如何在PySpark中覆盖Spark ML模型?

12
from pyspark.ml.regression import RandomForestRegressionModel

rf = RandomForestRegressor(labelCol="label",featuresCol="features", numTrees=5, maxDepth=10, seed=42)
rf_model = rf.fit(train_df)
rf_model_path = "./hdfsData/" + "rfr_model"
rf_model.save(rf_model_path)

我第一次尝试保存模型时,这些代码是有效的。但当我想再次将模型保存到路径中时,它会出现以下错误:

Py4JJavaError: 调用 o1695.save 时发生错误。: java.io.IOException: 路径 ./hdfsData/rfr_model 已经存在。请使用 write.overwrite().save(path) 来覆盖它。

然后我尝试了:

rf_model.write.overwrite().save(rf_model_path)

结果为:

属性错误:'function'对象没有属性'overwrite'

似乎 pyspark.mllib 模块提供了 overwrite 函数,但是pyspark.ml模块没有。如果我想用新模型覆盖旧模型,有人知道如何解决吗?谢谢。

3个回答

31

您看到的消息是Java错误消息,而不是Python错误消息。您应该首先调用write方法:

rf_model.write().overwrite().save(rf_model_path)

0

显然在Scala中它可以这样工作

rf_model.write.overwrite.save(rf_model_path)

-3

你需要删除在第一次运行时已经创建的文件夹,然后重新运行你的代码。


如果她想要覆盖它,就不必担心删除文件夹。 - Rafael Larios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接