JDBC 驱动程序

可以使用 JDBC 驱动程序从 Java 访问 Presto。下载 presto-jdbc-0.289.jar 并将其添加到 Java 应用程序的类路径中。

驱动程序也可从 Maven Central 获取

<dependency>
    <groupId>com.facebook.presto</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>0.289</version>
</dependency>

要求

Presto JDBC 驱动程序具有以下要求

  • Java 版本 8 或更高版本。

  • 所有使用 JDBC 驱动程序连接到 Presto 的用户都必须被授予查询 system.jdbc 架构中表的权限。

连接

支持以下 JDBC URL 格式

jdbc:presto://host:port
jdbc:presto://host:port/catalog
jdbc:presto://host:port/catalog/schema

例如,使用以下 URL 连接到在 example.net 端口 8080 上运行的 Presto,并使用目录 hive 和架构 sales

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

上面的 URL 可以按如下方式使用来创建连接

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

连接参数

驱动程序支持各种参数,这些参数可以设置为 URL 参数或作为传递给 DriverManager 的属性。以下两个示例等效

// properties
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);

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

这些方法可以混合使用;一些参数可以在 URL 中指定,而另一些参数可以使用属性指定。但是,同一个参数不能使用这两种方法指定。

参数参考

名称

描述

user

用于身份验证和授权的用户名。

password

用于 LDAP 身份验证的密码。

socksProxy

SOCKS 代理主机和端口。例如:localhost:1080

httpProxy

HTTP 代理主机和端口。例如:localhost:8888

protocols

要使用的 HTTP 协议的逗号分隔列表。例如:protocols=http11。可接受的值:http11,http10,http2

applicationNamePrefix

附加到任何指定的 ApplicationName 客户端信息属性的前缀,用于设置 Presto 查询的源名称。如果既没有设置此属性,也没有设置 ApplicationName,则查询的源将为 presto-jdbc

accessToken

用于基于令牌的身份验证的访问令牌。

timeZoneId

用于查询输出中时间戳列的时区。例如:timeZoneId=UTC

disableCompression

禁用来自服务器的查询结果 HTTP 响应的压缩

SSL

对连接使用 HTTPS

SSLKeyStorePath

包含用于身份验证的证书和私钥的 Java 密钥存储文件的位置。

SSLKeyStorePassword

密钥存储的密码。

SSLTrustStorePath

将用于验证 HTTPS 服务器证书的 Java 信任存储文件的位置。

SSLTrustStorePassword

信任存储的密码。

KerberosRemoteServiceName

Presto 协调器 Kerberos 服务名称。此参数对于 Kerberos 身份验证是必需的。

KerberosPrincipal

身份验证到 Presto 协调器时使用的主体。

KerberosUseCanonicalHostname

通过首先将主机名解析为 IP 地址,然后对该 IP 地址进行反向 DNS 查找,为 Kerberos 服务主体使用 Presto 协调器的规范主机名。默认情况下启用此功能。

KerberosConfigPath

Kerberos 配置文件。

KerberosKeytabPath

Kerberos 密钥表文件。

KerberosCredentialCachePath

Kerberos 凭证缓存。

extraCredentials

用于连接到外部服务的额外凭证。extraCredentials 是一个键值对列表。例如:foo:bar;abc:xyz 将创建凭证 abc=xyzfoo=bar

customHeaders

通过 JDBC 驱动程序注入的自定义标头。customHeaders 是一个键值对列表。例如:testHeaderKey:testHeaderValue 将使用值 testHeaderValue 注入标头 testHeaderKey。值应进行百分比编码。

validateNextUriSource

验证下一个 URI 中的主机和端口在查询执行期间不会更改。

followRedirects

禁用 Presto 客户端以安全措施的形式执行重定向。