1

一段时间以来,我使用sparklyr包连接到公司的 Hadoop 集群,使用以下代码:

library(sparklyr)

Sys.setenv(SPARK_HOME="/opt/spark/")
Sys.setenv(HADOOP_CONF_DIR="/etc/hadoop/conf.cloudera.yarn")
Sys.setenv(JAVA_HOME="/usr/lib/jvm/jre")

system('kinit -k -t user.keytab user@xyz')

sc <- spark_connect(master="yarn",
                config = list(
                  default = list(
                    spark.submit.deployMode= "client",
                    spark.yarn.keytab= "user.keytab",
                    spark.yarn.principal= "user@xyz",
                    spark.executor.instances= 20, 
                    spark.executor.memory= "4G",
                    spark.executor.cores= 4,
                    spark.driver.memory= "8G")))

一切正常,但是当我尝试rsparkling使用类似代码添加包时:

library(h2o)
library(rsparkling)
library(sparklyr)

options(rsparkling.sparklingwater.version = '2.0')

Sys.setenv(SPARK_HOME="/opt/spark/")
Sys.setenv(HADOOP_CONF_DIR="/etc/hadoop/conf.cloudera.yarn")
Sys.setenv(JAVA_HOME="/usr/lib/jvm/jre")

system('kinit -k -t user.keytab user@xyz')

sc <- spark_connect(master="yarn",
                config = list(
                  default = list(
                    spark.submit.deployMode= "client",
                    spark.yarn.keytab= "user.keytab",
                    spark.yarn.principal= "user@xyz",
                    spark.executor.instances= 20, 
                    spark.executor.memory= "4G",
                    spark.executor.cores= 4,
                    spark.driver.memory= "8G")))

我收到错误:

强制错误(代码):
在 sessionid (9819) 连接到 sparklyr 到端口 (8880) 时失败:Sparklyr 网关在 60 秒后检索端口信息时没有响应路径:/opt/spark-2.0.0-bin-hadoop2。 6/bin/spark-submit 参数:--class, sparklyr.Backend,--packages, 'ai.h2o:sparkling-water-core_2.11:2.0','ai.h2o:sparkling-water-ml_2.11: 2.0','ai.h2o:sparkling-water-repl_2.11:2.0', '/usr/lib64/R/library/sparklyr/java/sparklyr-2.0-2.11.jar', 8880, 9819

---- 输出日志 ----
Ivy 默认缓存设置为:/opt/users/user/.ivy2/cache 包的 jar 存储在:/opt/users/user/.ivy2/jars :: loading settings :: url = jar:file:/opt/spark-2.0.0-bin-hadoop2.6/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml ai.h2o #sparkling-water-core_2.11 作为依赖项添加 ai.h2o#sparkling-water-ml_2.11 作为依赖项添加 ai.h2o#sparkling-water-repl_2.11 作为依赖项添加 :: 解决依赖项 :: org. apache.spark#spark-submit-parent;1.0 confs:[默认]

---- 错误日志 ----
另外:警告消息:1:在 if (nchar(config[[e]]) == 0) found <- FALSE 中:条件的长度为 1,只有第一个元素会使用 2:在 if (nchar(config[[e]]) == 0) found <- FALSE 中:条件的长度为 1,仅使用第一个元素

我是新手,spark现在clusters不确定该怎么做。任何帮助将不胜感激。我的第一个想法是缺少jar文件,sparkling watercluster吗?

4

1 回答 1

1

您需要使用确切的苏打水版本号:

options(rsparkling.sparklingwater.version = '2.0.5')

或者您可以直接从http://h2o.ai/download下载 Sparkling 版本的二进制版本,解压缩并将上面的语句替换为:

options(rsparkling.sparklingwater.location = "/tmp/sparkling-water-assembly_2.11-2.0.99999-SNAPSHOT-all.jar")

于 2017-03-08T17:07:51.447 回答