0
繼ALS示例hereSparkR錯誤( 「預測」)
...但在分佈式模式下,例如運行
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)
我得到以下錯誤:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "ALSModel"
望着source for 2.1.1方法似乎存在,那就是直接上面定義的summary()
功能工作得很好。
我試着用Spark,2.1.0,2.1.1和2.2.0-rc6,所有這些都給出了相同的結果。此外,這不限於ALS模型,因爲任何模型都會調用predict()
給出相同的錯誤。
我在本地模式下運行時也會出現同樣的錯誤,例如:
spark <- sparkR.session("local[*]")
有沒有人碰到這個問題之前來的呢?
你是通過'spark-submit'在本地還是集羣運行?爲什麼你將所有這些提交參數設置爲腳本?你是否明確地在腳本中使用'庫(SparkR)? – desertnaut
我正在運行這是分佈式模式,這就是爲什麼額外的參數在session()中。是的,我正在腳本中明確調用'library(SparkR)'。 只需要添加,我最終通過使用Spark 2.1.1解決了這個問題,這是我設法使用它的唯一版本。 – dtsbg
再一次,這些額外的參數不是通常的過程(通常你在命令行中提供它們)。一旦你解決了這個問題,回答你自己的問題是一個很好的做法,以便將來可能對其他人有用。 – desertnaut