我正在尝试设置我的R环境以在YARN群集上运行h2o算法。 (由于安全原因无法访问互联网 - 在R服务器上运行)
以下是我当前的环境设置:
我检查了h2o_version表中的所有版本映射,但在运行代码时仍然出现此错误:
options(rsparkling.sparklingwater.version = "2.2.16")
options(rsparkling.sparklingwater.location = "path to my sparkling water.jar")
Sys.setenv(SPARK_HOME = "path to my spark")
Sys.setenv(SPARK_VERSION = "2.2.0")
Sys.setenv(HADOOP_CONF_DIR = "...")
Sys.setenv(MASTER = "yarn-client")
library(sparklyr)
library(h2o)
library(rsparkling)
sc = spark_connect(master = Sys.getenv("SPARK_MASTER"), spark_home = Sys.getenv("SPARK_HOME"), version = Sys.getenv("SPARK_VERSION"))
h2o_context(sc)
R Server ERROR output:
Error: java.lang.ClassNotFoundExecption: water.fvec.Frame
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
...
我试过的事情:
我确信它不会是版本错误,因为我已根据h2o_release_table()匹配它们,如图所示。请帮助或指导我找到解决方案。
(问题解决了)
原来我的spark-client路径中的/ jar /目录中还有另一个sparkling-water-core_2.11-2.2.16.jar文件,因此被直接作为Classpath Entries的一部分读入,导致冲突。 (通过Spark UI Environment选项卡确认)我已经玩过Spark Classpath而没有任何运气,所以我不得不请求删除该文件。
在这之后,问题得到了解决。我也用不同版本的苏打水JAR和h2o R包进行了测试。 (sw 2.2.11&h2o 3.18.0.5,sw 2.2.19&h2o 3.20.0.2)
options(rsparkling.sparklingwater.version = "2.2.16")
options(rsparkling.sparklingwater.location = "path to my sparkling water.jar")
Sys.setenv(SPARK_HOME = "path to my spark")
Sys.setenv(SPARK_VERSION = "2.2.0")
Sys.setenv(HADOOP_CONF_DIR = "...")
Sys.setenv(MASTER = "yarn-client")
library(sparklyr)
library(h2o)
library(rsparkling)
sc = spark_connect(master = Sys.getenv("SPARK_MASTER"),
spark_home = Sys.getenv("SPARK_HOME"),
version = Sys.getenv("SPARK_VERSION"))
h2o_context(sc)
有点尴尬回答我自己的问题,但我希望这可以帮助其他有需要的人!