JDBC Driver#

The Presto JDBC driver allows users to access Presto using Java-based applications, and other non-Java applications running in a JVM. Both desktop and server-side applications, such as those used for reporting and database development, use the JDBC driver.


The JDBC driver is compatible with Java versions 8 or higher, and can be used with applications running on Java virtual machines version 8 or higher.


Download presto-jdbc-347.jar and add it to the classpath of your Java application.

The driver is also available from Maven Central:


We recommend using the latest version of the JDBC driver. A list of all available versions can be found in the Maven Central Repository. Navigate to the directory for the desired version, and select the presto-jdbc-xxx.jar file to download, where xxx is the version number.

Once downloaded, you must add the JAR file to a directory in the classpath of users on systems where they will access Presto.

After you have downloaded the JDBC driver and added it to your classpath, you’ll typically need to restart your application in order to recognize the new driver. Then, depending on your application, you may need to manually register and configure the driver.

Registering and configuring the driver#

Drivers are commonly loaded automatically by applications once they are added to its classpath. If your application does not, such as is the case for some GUI-based SQL editors, read this section. The steps to register the JDBC driver in a UI or on the command line depend upon the specific application you are using. Please check your application’s documentation.

Once registered, you must also configure the connection information as described in the following section.


When your driver is loaded, registered and configured, you are ready to connect to Presto from your application. The following JDBC URL formats are supported:


The following is an example of a JDBC URL used to create a connection:


This example JDBC URL locates a Presto instance running on port 8080 on example.net, with the catalog hive and the schema sales defined.

Connection parameters#

The driver supports various parameters that may be set as URL parameters, or as properties passed to DriverManager. Both of the following examples are equivalent:

// URL parameters
String url = "jdbc:presto://example.net:8080/hive/sales";
Properties properties = new Properties();
properties.setProperty("user", "test");
properties.setProperty("password", "secret");
properties.setProperty("SSL", "true");
Connection connection = DriverManager.getConnection(url, properties);

// properties
String url = "jdbc:presto://example.net:8080/hive/sales?user=test&password=secret&SSL=true";
Connection connection = DriverManager.getConnection(url);

These methods may be mixed; some parameters may be specified in the URL, while others are specified using properties. However, the same parameter may not be specified using both methods.

Parameter reference#




Username to use for authentication and authorization.


Password to use for LDAP authentication.


SOCKS proxy host and port. Example: localhost:1080


HTTP proxy host and port. Example: localhost:8888


Extra information about the client.


Client tags for selecting resource groups. Example: abc,xyz


Trace token for correlating requests across systems.


Source name for the Presto query. This parameter should be used in preference to ApplicationName. Thus, it takes precedence over ApplicationName and/or applicationNamePrefix.


Prefix to append to any specified ApplicationName client info property, which is used to set the source name for the Presto query if the source parameter has not been set. If neither this property nor ApplicationName or source are set, the source name for the query is presto-jdbc.


Access token for token based authentication.


Use HTTPS for connections


The method of SSL verification. There are three modes: FULL (default), CA and NONE. For FULL, the normal TLS verification is performed. For CA, only the CA is verified but hostname mismatch is allowed. For NONE, there is no verification.


The location of the Java KeyStore file that contains the certificate and private key to use for authentication.


The password for the KeyStore.


The type of the KeyStore. The default type is provided by the Java keystore.type security property or jks if none exists.


The location of the Java TrustStore file to use. to validate HTTPS server certificates.


The password for the TrustStore.


The type of the TrustStore. The default type is provided by the Java keystore.type security property or jks if none exists.


Presto coordinator Kerberos service name. This parameter is required for Kerberos authentication.


The principal to use when authenticating to the Presto coordinator.


Use the canonical hostname of the Presto coordinator for the Kerberos service principal by first resolving the hostname to an IP address and then doing a reverse DNS lookup for that IP address. This is enabled by default.


Presto coordinator Kerberos service principal pattern. The default is ${SERVICE}@${HOST}. ${SERVICE} is replaced with the value of KerberosRemoteServiceName and ${HOST} is replaced with the hostname of the coordinator (after canonicalization if enabled).


Kerberos configuration file.


Kerberos keytab file.


Kerberos credential cache.


Extra credentials for connecting to external services, specified as a list of key-value pairs. For example, foo:bar;abc:xyz creates the credential named abc with value xyz and the credential named foo with value bar.


Authorization roles to use for catalogs, specified as a list of key-value pairs for the catalog and role. For example, catalog1:roleA;catalog2:roleB sets roleA for catalog1 and roleB for catalog2.


Session properties to set for the system and for catalogs, specified as a list of key-value pairs. For example, abc:xyz;example.foo:bar sets the system property abc to the value xyz and the foo property for catalog example to the value bar.