使用 h2o.init() 连接到外部实例时向 H2O 添加额外的 jar

Posted

技术标签:

【中文标题】使用 h2o.init() 连接到外部实例时向 H2O 添加额外的 jar【英文标题】:Adding extra jar to H2O when connecting to external instance using h2o.init() 【发布时间】:2019-08-21 16:17:08 【问题描述】:

我在连接外部 H2O 实例时使用 H2O init 将 Snowflake JDBC 驱动程序指定为 extra_classpath,但是在尝试访问 Snowflake DB 时出现以下错误(H2O 成功连接到外部实例):

H2OServerError:HTTP 500 服务器错误: 服务器错误 java.lang.RuntimeException: 错误:SQLException:没有为 jdbc:snowflake:..找到合适的驱动程序

在启动独立的 H2O 实例时工作正常,其他没有任何变化。

这是初始化代码:

h2o.init(ip='<ip>', 
         port=54321,
         username='**',
         password='**',
         extra_classpath = ["snowflake-jdbc-3.8.0.jar"])

H2O 版本:3.22.1.1 Python 3

【问题讨论】:

【参考方案1】:

extra_classpath 用于从 Python 启动 H2O。当您连接到在另一台机器上运行的 H2O 时,它必须已经启动。因此,在 starting it 时,作为 java 命令的一部分,由启动它的人决定是否提供额外的类路径。 (如果是集群,则必须确保集群的每个节点都使用完全相同的命令。)

雪花罐必须在您提供的路径上可用,在服务器上。事实上,它不需要在客户端上,除非您也直接从 Python 脚本中使用它(即在 h2o 之外)。

顺便说一句,代码见https://github.com/h2oai/h2o-3/blob/master/h2o-py/h2o/h2o.py#L147。如果您搜索 extra_classpath 的用法,您会发现它仅在启动本地服务器时使用。

【讨论】:

以上是关于使用 h2o.init() 连接到外部实例时向 H2O 添加额外的 jar的主要内容,如果未能解决你的问题,请参考以下文章

无法从外部 docker 连接到 dockerized redis 实例

无法从 Docker 容器连接到外部 SQL Server

如何从亚马逊 vpc 连接到外部世界?

如何将 datastax 开发中心连接到亚马逊 EC2 实例中的远程集群?

无法通过 IAP 隧道连接到 GCP 中的笔记本实例

使用 TLS 将 pymongo 客户端连接到 mongodb 服务器