On this page

    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.

    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.

    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 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.

    Optional Advanced JDBC Driver Properties

    Parameter Value Description
    impersonation_target string 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.
    routing_queue string Specifies the queue to use for processing queries while a connection is open. For more information, see Query Tagging & Direct Routing Configuration.
    routing_tag string Sets 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.