【问题标题】:Save Apache Spark mllib model in python [duplicate]在python中保存Apache Spark mllib模型[重复]
【发布时间】:2015-04-10 06:09:33
【问题描述】:

我正在尝试将拟合模型保存到 Spark 中的文件中。我有一个训练 RandomForest 模型的 Spark 集群。我想在另一台机器上保存并重复使用已安装的模型。我在网上阅读了一些建议进行 java 序列化的帖子。我在 python 中做同样的事情,但它不起作用。有什么诀窍?

model = RandomForest.trainRegressor(trainingData, categoricalFeaturesInfo={},
                                    numTrees=nb_tree,featureSubsetStrategy="auto",
                                    impurity='variance', maxDepth=depth)
output = open('model.ml', 'wb')
pickle.dump(model,output)

我收到此错误:

TypeError: can't pickle lock objects

我使用的是 Apache Spark 1.2.0。

【问题讨论】:

标签: python pyspark apache-spark-mllib


【解决方案1】:

如果您查看源代码,您会看到 RandomForestModel 继承自 TreeEnsembleModel,而 TreeEnsembleModel 又继承自实现 save() 方法的 JavaSaveable 类,因此您可以将模型保存为在下面的例子中:

model.save([spark_context], [file_path])

因此它将使用spark_contextmodel 保存到file_path 中。你不能使用(至少直到现在)Python nativle pickle 来做到这一点。如果你真的想这样做,你需要手动实现 __getstate____setstate__ 方法。请参阅this pickle documentation 了解更多信息。

【讨论】:

    猜你喜欢
    • 2016-03-20
    • 2017-05-17
    • 2019-12-06
    • 2016-04-09
    • 2015-11-05
    • 2016-03-07
    • 2017-06-14
    • 2015-02-20
    • 2018-02-17
    相关资源
    最近更新 更多