使用 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 实例