Guarde el modelo mllib de Apache Spark en python

Estoy tratando de guardar un modelo ajustado en un archivo en Spark. Tengo un clúster Spark que entrena un modelo RandomForest. Me gustaría guardar y reutilizar el modelo ajustado en otra máquina. Leí algunas publicaciones en la web que recomiendan realizar la serialización de Java. Estoy haciendo el equivalente en python pero no funciona. ¿Cuál es el truco?

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

Estoy recibiendo este error:

 TypeError: can't pickle lock objects 

Estoy usando Apache Spark 1.2.0.

Si observa el código fuente, verá que RandomForestModel hereda de TreeEnsembleModel que a su vez hereda de la clase JavaSaveable que implementa el método save() , por lo que puede guardar su modelo como en el siguiente ejemplo:

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

Por lo tanto, guardará el model en file_path utilizando el spark_context . No puedes usar (al menos hasta ahora) el encurtido nativo de Python para hacer eso. Si realmente desea hacerlo, deberá implementar los métodos __getstate__ o __setstate__ manualmente. Consulte esta documentación de salmuera para obtener más información.