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