Ich arbeite mit Spark 1.3.0 mit PySpark und MLlib und ich muss meine Modelle speichern und laden. Ich verwende Code wie folgt (von der offiziellen documentation genommen)Was ist der richtige Weg zum Speichern von Modellen in Spark PySpark
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
data = sc.textFile("data/mllib/als/test.data")
ratings = data.map(lambda l: l.split(',')).map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))
rank = 10
numIterations = 20
model = ALS.train(ratings, rank, numIterations)
testdata = ratings.map(lambda p: (p[0], p[1]))
predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
predictions.collect() # shows me some predictions
model.save(sc, "model0")
# Trying to load saved model and work with it
model0 = MatrixFactorizationModel.load(sc, "model0")
predictions0 = model0.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
Nachdem ich versuche zu verwenden model0 ich eine lange Zurückverfolgungs bekommen, die mit diesem endet:
Py4JError: An error occurred while calling o70.predict. Trace:
py4j.Py4JException: Method predict([class org.apache.spark.api.java.JavaRDD]) does not exist
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:333)
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:342)
at py4j.Gateway.invoke(Gateway.java:252)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:207)
at java.lang.Thread.run(Thread.java:745)
Also meine Frage ist - bin ich etwas falsch machen? Soweit ich debugged meine Modelle gespeichert sind (lokal und auf HDFS) und sie enthalten viele Dateien mit einigen Daten. Ich habe das Gefühl, die Modelle korrekt gespeichert werden, aber wahrscheinlich werden sie nicht richtig geladen. Ich habe auch gegoogelt, aber nichts gefunden.
Sieht aus wie diese Funktion save \ load wurde kürzlich in Spark 1.3.0 hinzugefügt und aus diesem Grund habe ich eine andere Frage - Was war die empfohlene Methode zum Speichern \ laden Modelle vor der Version 1.3.0? Ich habe keine guten Möglichkeiten gefunden, zumindest für Python. Ich habe auch versucht Pickle, aber mit den gleichen Problemen konfrontiert wie hier beschrieben Save Apache Spark mllib model in python
Vielen Dank! Sieht so aus, als wäre das ein Python Bindings Bug. – artemdevel