如何在 PySpark 中覆盖 Spark ML 模型?
How to overwrite Spark ML model in PySpark?
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: An error occurred while calling o1695.save. : java.io.IOException: Path ./hdfsData/rfr_model already exists. Please use write.overwrite().save(path) to overwrite it.
然后我尝试了:
rf_model.write.overwrite().save(rf_model_path)
它给出了:
AttributeError: 'function' object has no attribute 'overwrite'
好像pyspark.mllib
模块有覆盖功能,pyspark.ml
模块没有。如果我想用新模型覆盖旧模型,有人知道如何解决这个问题吗?谢谢。
您看到的消息是 Java 错误消息,而不是 Python 错误消息。你应该先调用write
方法:
rf_model.write().overwrite().save(rf_model_path)
显然在 Scala 中可以使用
rf_model.write.overwrite.save(rf_model_path)
您必须删除在第一次 运行 期间创建的文件夹,然后重新运行 您的代码。
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: An error occurred while calling o1695.save. : java.io.IOException: Path ./hdfsData/rfr_model already exists. Please use write.overwrite().save(path) to overwrite it.
然后我尝试了:
rf_model.write.overwrite().save(rf_model_path)
它给出了:
AttributeError: 'function' object has no attribute 'overwrite'
好像pyspark.mllib
模块有覆盖功能,pyspark.ml
模块没有。如果我想用新模型覆盖旧模型,有人知道如何解决这个问题吗?谢谢。
您看到的消息是 Java 错误消息,而不是 Python 错误消息。你应该先调用write
方法:
rf_model.write().overwrite().save(rf_model_path)
显然在 Scala 中可以使用
rf_model.write.overwrite.save(rf_model_path)
您必须删除在第一次 运行 期间创建的文件夹,然后重新运行 您的代码。