Nach dem ALS Beispiel hereSparkR Fehler in UseMethod ("vorhersagen")
... aber in verteilten Modus ausgeführt wird, z.B.
Sys.setenv("SPARKR_SUBMIT_ARGS"="--master yarn sparkr-shell")
spark <- sparkR.session(master = "yarn",
sparkConfig = list(
spark.driver.memory = "2g",
spark.driver.extraJavaOptions =
paste("-Dhive.metastore.uris=",
Sys.getenv("HIVE_METASTORE_URIS"),
" -Dspark.executor.instances=",
Sys.getenv("SPARK_EXECUTORS"),
" -Dspark.executor.cores=",
Sys.getenv("SPARK_CORES"),
sep = "")
))
ratings <- list(list(0, 0, 4.0), list(0, 1, 2.0), list(1, 1, 3.0), list(1, 2, 4.0),list(2, 1, 1.0), list(2, 2, 5.0))
df <- createDataFrame(ratings, c("user", "item", "rating"))
model <- spark.als(df, "rating", "user", "item")
stats <- summary(model)
userFactors <- stats$userFactors
itemFactors <- stats$itemFactors
# make predictions
summary(model)
predicted <- predict(object=model, data=df)
bekomme ich folgende Fehlermeldung:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "ALSModel"
am source for 2.1.1 Blick das Verfahren zu existieren scheint, und die summary()
Funktion, die oben definiert ist, arbeitet direkt gut.
Ich habe mit Spark, 2.1.0, 2.1.1 und 2.2.0-rc6 versucht, die alle das gleiche Ergebnis geben. Dies ist auch nicht auf das ALS-Modell beschränkt, das Aufrufen von predict()
für irgendein Modell ergibt den gleichen Fehler.
Ich bekomme auch den gleichen Fehler, wenn ich es im lokalen Modus, z.
spark <- sparkR.session("local[*]")
Hat jemand schon einmal auf dieses Problem gestoßen?
Führen Sie dies lokal oder in einem Cluster über 'spark-submit' aus? Und wieso genau stellst du all diese Argumente in-Skript einreichen? Verwenden Sie explizit Bibliothek (SparkR) in Ihrem Skript? – desertnaut
Ich betreibe das ist verteilter Modus, weshalb die zusätzlichen Argumente in der Sitzung() sind. Und ja, ich rufe 'library (SparkR)' explizit im Skript an. Nur um hinzuzufügen, löste ich es mit Spark 2.1.1 am Ende, das war die einzige Version, die ich es geschafft, damit zu arbeiten. – dtsbg
Wieder sind diese zusätzlichen Argumente nicht üblich (normalerweise geben Sie sie in der Befehlszeile an). Und wenn Sie das Problem gelöst haben, ist es eine gute Übung, Ihre eigene Frage zu beantworten, damit sie für andere in Zukunft nützlich sein kann. – desertnaut