7

適合モデルを Spark のファイルに保存しようとしています。RandomForest モデルをトレーニングする Spark クラスターがあります。適合したモデルを保存して、別のマシンで再利用したいと考えています。Javaシリアライゼーションを行うことを推奨するWeb上の投稿をいくつか読みました。私は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 を使用しています。

4

1 に答える 1

2

ソース コードを見ると、が メソッドを実装するクラスからRandomForestModel継承されていることがわかります。そのため、以下の例のようにモデルを保存できます。TreeEnsembleModelJavaSaveablesave()

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

modelしたがって、file_pathを使用してを に保存しspark_contextます。(少なくとも今までは) Python ネイティブの pickle を使用してそれを行うことはできません。本当にやりたい場合は、メソッドを実装する__getstate__か、__setstate__手動で実装する必要があります。詳細については、このピクルのドキュメントを参照してください。

于 2015-04-20T04:41:14.727 に答える