Skip to main content
Version: current [25.0.x]

Dremio JDBC Driver

The legacy 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. You can also download the JDBC driver from here. This driver is licensed under Apache-2.0.

note

It is recommended to use the JDBC driver for Arrow Flight SQL, rather than this legacy JDBC driver.

note

A new version of the JDBC driver is made available with every release of Dremio software. However, this doesn't mean changes or new features were introduced in a driver release. Only when actual changes are made to a driver will the JDBC driver release notes be published.

note

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

Supported Authentication Methods

  • Use the username and password of the Dremio account that you want to connect with.
  • Use a username and personal access token (PAT). To generate a PAT, see Personal Access Tokens.

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 directly to Dremio

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

Connect directly to Dremio coordinator node
jdbc:dremio:direct=<DREMIO_COORDINATOR>:31010[;schema=<OPTIONAL_SCHEMA>]

Connecting to ZooKeeper

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

Connect to Dremio coordinator node with ZooKeeper
jdbc:dremio:zk=<ZOOKEEPER_QUORUM>:2181[;schema=<OPTIONAL_SCHEMA>]

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 JDBC client applications and the Dremio server, use the SSL JDBC connection parameters and a fully qualified host name to configure the JDBC connection string and connect to Dremio:

ParameterValueRequiredDescription
ssltrue/false[Optional]If true, SSL is enabled. If not set or set to false, SSL is not enabled.
trustStoreTypestring[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.
trustStorestring[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.
useSystemTrustStoretrue/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.
trustStorePasswordstring[Optional]Password to the truststore.
disableHostVerificationtrue/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)
disableCertificateVerificationtrue/false[Optional]If true, Dremio does not verify the host certificate against the truststore. False by default.

Optional Advanced JDBC Driver Properties

ParameterValueDescription
impersonation_targetstringWhen 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.
routing_queuestringSpecifies the queue to use for processing queries while a connection is open. For more information, see Query Tagging & Direct Routing Configuration.
routing_tagstringSets a tag for rule processing. The specified tag is associated with all queries executed while a connection is open. Rules can check for the presence of a tag with the function tag(). For more information, see Query Tagging & Direct Routing Configuration.
token_typestringThe type of the token in the password field. Valid values are jwt for external tokens or personal_access_token for personal access tokens. If you are using your Dremio password, omit the token_type property.

SOCKS Proxy Connection Parameters

If you want to connect to Dremio Cloud through a SOCKS proxy, use these connection parameters:

ParameterTypeDescriptionDefault ValueRequired?
socksProxyHoststringThe IP address or hostname of the SOCKS proxy.N/AYes
socksProxyPortintegerThe port to use on the SOCKS proxy.1080No
socksProxyUsernamestringThe username to use for connections.N/ANo
socksProxyPasswordstringThe password to use for connections.N/AOnly if a username is specified.