JDBC

The Dremio JDBC driver is included as a part of Dremio installations under <DREMIO_HOME>/jars/jdbc-driver/. The main JAR Class is com.dremio.jdbc.Driver.

Tip: To distribute query planning for ODBC and JDBC connections, configure secondary coordinator nodes for your deployment.

Setup

You can set up the JDBC driver in the following manner:

  • Connect directly to the Dremio server
  • Connect to the Dremio server via Zookeeper

Connecting direct to server

The following configuration establishes a direct connection to a Dremio coordinator node. Planning is done on the specified node.

jdbc:dremio:direct=<DREMIO_COORDINATOR>:31010[;schema=<OPTIONAL_SCHMEMA>]

Connecting to ZooKeeper

The following configuration established a distributed connection to Dremio coordinator nodes through a Zookeeper quorum. Planning is distributed across the available coordinator nodes.

jdbc:dremio:zk=<ZOOKEEPER_QUORUM>:2181[;schema=<OPTIONAL_SCHMEMA>]

Multiple Dremio Clusters in the same ZooKeeper Quorum

Cluster A

jdbc:dremio:zk=<ZOOKEEPER_QUORUM>:2181/path/to/ClusterA

Cluster B

jdbc:dremio:zk=<ZOOKEEPER_QUORUM>:2181/path/to/ClusterB

JDBC Parameters for Dremio Wire Encryption

If you are setting up encrypted communication between your ODBC/JDBC client applications and the Dremio server, use the SSL JDBC connection parameters and fully qualified host name to configure the JDBC connection string and connect to Dremio.

Parameter Value Required Description
ssl true/false [Optional] If true, SSL is enabled. If not set or set to false, SSL is not enabled.
trustStoreType string [Optional] Default: JKS The trustStore type. Allowed values are : JKS PKCS12

If the useSystemTrustStore option is set to true (on Windows only), the allowed values are: Windows-MY Windows-ROOT
Import the certificate into the Trusted Root Certificate Authorities and set trustStoreType=Windows-ROOT.
Also import the certificate into Trusted Root Certificate Authorities or Personal and set trustStoreType=Windows-MY.
trustStore string [Optional] Path to the truststore.
If not provided, the default Java truststore is used (usually $JAVA_HOME/lib/security/cacerts) and the trustStorePassword parameter is ignored.
useSystemTrustStore true/false [Optional] By default, the value is true. Bypasses trustStoreType and automatically picks the correct Truststore based on the operating system: Keychain on MacOS, Local Machine and Current User Certificate Stores on Windows, and default truststore on other systems.
trustStorePassword string [Optional] Password to the truststore.
disableHostVerification true/false [Optional] If true, Dremio does not verify that the host in the certificate is the host we are connecting to. False by default.

(Hostname verification follows the specification in RFC2818)
disableCertificateVerification true/false [Optional] If true, Dremio does not verify the host certificate against the truststore. False by default.

Advanced JDBC Driver Properties

Parameter Value Required Description
impersonation_target string [Optional] When inbound impersonation is configured, impersonation_target is used for authorization, so it must have permission to the queried datasets, and impersonation_target appears as the identity that submitted the queries. The username used to establish the connection must be mapped to impersonation_target in the impersonation policy for the Dremio service, otherwise, the connection fails with an authorization error. In the policy, the user used to establish the connection is the proxy_principle and impersonation_target is its target_principle. For more information on configuring policies, see Inbound Impersonation.