2.3. JDBC Driver

Presto can be accessed from Java using the JDBC driver.Download presto-jdbc-0.229.jar and add it to the class path of your Java application.

The driver is also available from Maven Central:

  1. <dependency>
  2. <groupId>com.facebook.presto</groupId>
  3. <artifactId>presto-jdbc</artifactId>
  4. <version>0.229</version>
  5. </dependency>

Connecting

The following JDBC URL formats are supported:

  1. jdbc:presto://host:port
  2. jdbc:presto://host:port/catalog
  3. jdbc:presto://host:port/catalog/schema

For example, use the following URL to connect to Prestorunning on example.net port 8080 with the catalog hiveand the schema sales:

  1. jdbc:presto://example.net:8080/hive/sales

The above URL can be used as follows to create a connection:

  1. String url = "jdbc:presto://example.net:8080/hive/sales";
  2. Connection connection = DriverManager.getConnection(url, "test", null);

Connection Parameters

The driver supports various parameters that may be set as URL parametersor as properties passed to DriverManager. Both of the followingexamples are equivalent:

  1. // URL parameters
  2. String url = "jdbc:presto://example.net:8080/hive/sales";
  3. Properties properties = new Properties();
  4. properties.setProperty("user", "test");
  5. properties.setProperty("password", "secret");
  6. properties.setProperty("SSL", "true");
  7. Connection connection = DriverManager.getConnection(url, properties);
  8.  
  9. // properties
  10. String url = "jdbc:presto://example.net:8080/hive/sales?user=test&password=secret&SSL=true";
  11. Connection connection = DriverManager.getConnection(url);

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

Parameter Reference

NameDescription
userUsername to use for authentication and authorization.
passwordPassword to use for LDAP authentication.
socksProxySOCKS proxy host and port. Example: localhost:1080
httpProxyHTTP proxy host and port. Example: localhost:8888
applicationNamePrefixPrefix to append to any specified ApplicationName client infoproperty, which is used to set the source name for the Presto query.If neither this property nor ApplicationName are set, the sourcefor the query will be presto-jdbc.
accessTokenAccess token for token based authentication.
SSLUse HTTPS for connections
SSLKeyStorePathThe location of the Java KeyStore file that contains the certificateand private key to use for authentication.
SSLKeyStorePasswordThe password for the KeyStore.
SSLTrustStorePathThe location of the Java TrustStore file that will be usedto validate HTTPS server certificates.
SSLTrustStorePasswordThe password for the TrustStore.
KerberosRemoteServiceNamePresto coordinator Kerberos service name. This parameter isrequired for Kerberos authentication.
KerberosPrincipalThe principal to use when authenticating to the Presto coordinator.
KerberosUseCanonicalHostnameUse the canonical hostname of the Presto coordinator for the Kerberosservice principal by first resolving the hostname to an IP addressand then doing a reverse DNS lookup for that IP address.This is enabled by default.
KerberosConfigPathKerberos configuration file.
KerberosKeytabPathKerberos keytab file.
KerberosCredentialCachePathKerberos credential cache.
extraCredentialsExtra credentials for connecting to external services. TheextraCredentials is a list of key-value pairs. Example:foo:bar;abc:xyz will create credentials abc=xyz and foo=bar