在 R 中调用 h2o.init() 连接到远程集群时出错

Error when calling h2o.init() in R to connecting to remote cluster

我正在尝试从 R 连接到托管在 EC2 机器上的集群,在 Windows 和 Mac 上尝试时遇到相同的错误:

> h2o.init(ip = "<Public IP>")
 Connection successful!


ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://<Public IP>:54321/3/Cloud?skip_ticks=true)

Error: lexical error: invalid char in json text.
                                       <!DOCTYPE html> <html lang="en"
                     (right here) ------^

我看到以下 issue 标记为已解决,但它对我的情况没有帮助。有没有人经历过类似的事情?


UPD: 答案很简单。事实证明,EC2 机器上的 guide for EC2 is outdated and uses the old version of H2O. Using the most recent version (3.9.1.5555 目前)中给出的代码示例已经解决了这个问题。

详细说明 OP 的更新,当使用远程集群时:

确保安装最新版本(检查 S3 download page 是否重定向到版本号)。在下面的示例中,这是 3.13.0.3908:

wget http://s3.amazonaws.com/h2o-release/h2o/master/3908/h2o-3.13.0.3908.zip
unzip h2o-3.13.0.3908.zip
mv h2o-3.13.0.3908 h2o
cd h2o
java -Xmx4g -jar h2o.jar

然后您需要安装与此版本相对应的 h2o-R 版本。 (正确的版本可能 而不是 CRAN 版本 。)否则你会得到如下错误:

Error in h2o.init(ip = "XXX.XX.XX.XXX", startH2O = FALSE) : 
  Version mismatch! H2O is running version 3.13.0.3908 but h2o-R package is version 3.10.4.6.
         Install the matching h2o-R version from - http://h2o-release.s3.amazonaws.com/h2o/master/3908/index.html

所以你需要注意版本号 H2O 是 运行(在上面的例子中,3908),确保你之前已经删除了任何现有的 h2o-R 包(见 here了解更多信息),然后执行:

install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/master/3908/R")

现在它应该可以工作了:

library('h2o')
remoteH2O <- h2o.init(ip='XXX.XX.XX.XXX', startH2O=FALSE) #  Connection successful!