【问题标题】:How to overwrite Spark ML model in PySpark?如何在 PySpark 中覆盖 Spark ML 模型?
【发布时间】:2017-07-07 07:41:43
【问题描述】:
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)

它给了:

AttributeError: 'function' 对象没有属性 'overwrite'

似乎pyspark.mllib 模块提供了覆盖功能,而不是pyspark.ml 模块。如果我想用新模型覆盖旧模型,任何人都知道如何解决这个问题?谢谢。

【问题讨论】:

    标签: apache-spark machine-learning pyspark apache-spark-mllib apache-spark-ml


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      显然在 scala 中可以使用

      rf_model.write.overwrite.save(rf_model_path)
      

      【讨论】:

        【解决方案3】:

        您必须删除在第一次运行期间已创建的文件夹,然后重新运行您的代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-13
          • 2021-06-25
          相关资源
          最近更新 更多