0
votes

I'm using H2O init to specify the Snowflake JDBC driver as extra_classpath when connecting to external H2O instance however, getting the following error (H2O connects successfully to external instance), when attempting to access Snowflake DB:

H2OServerError: HTTP 500 Server Error: Server error java.lang.RuntimeException: Error: SQLException: No suitable driver found for jdbc:snowflake:..

It works fine when starting a standalone H2O instance with nothing else changed.

Here is the init code:

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

H2O version: 3.22.1.1 Python 3

1

1 Answers

0
votes

extra_classpath is for use when starting H2O from Python. When you are connecting to H2O that is running on another machine, it has to already be started. So it is up to whoever started it, to have given that extra classpath, as part of the java command, when starting it. (And if a cluster, you have to make sure every node of the cluster uses the exact same command.)

The snowflake jar has to be available, on the path you give, on the server. In fact, there is no need for it to be on the client, unless you are also using it directly from your Python script (i.e. outside of h2o).

BTW, see https://github.com/h2oai/h2o-3/blob/master/h2o-py/h2o/h2o.py#L147 for the code. If you search for uses of extra_classpath you see it is only used when starting the local server.