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 Proxy 主機和連接埠。範例: localhost:1080

httpProxy

HTTP Proxy 主機和連接埠。範例: 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 KeyStore 檔案的位置,其中包含用於驗證的憑證和私密金鑰。

SSLKeyStorePassword

KeyStore 的密碼。

SSLTrustStorePath

Java TrustStore 檔案的位置,該檔案將用於驗證 HTTPS 伺服器憑證。

SSLTrustStorePassword

TrustStore 的密碼。

KerberosRemoteServiceName

Presto 協調器 Kerberos 服務名稱。此參數為 Kerberos 驗證所必需。

KerberosPrincipal

在向 Presto 協調器進行驗證時要使用的主體。

KerberosUseCanonicalHostname

首先將主機名稱解析為 IP 位址,然後對該 IP 位址進行反向 DNS 查閱,從而為 Kerberos 服務主體使用 Presto 協調器的標準主機名稱。預設會啟用此功能。

KerberosConfigPath

Kerberos 組態檔案。

KerberosKeytabPath

Kerberos keytab 檔案。

KerberosCredentialCachePath

Kerberos 憑證快取。

extraCredentials

用於連線到外部服務的額外憑證。extraCredentials 是鍵值對的清單。範例: foo:bar;abc:xyz 將建立憑證 abc=xyzfoo=bar

customHeaders

要透過 JDBC 驅動程式注入的自訂標頭。customHeaders 是鍵值對的清單。範例: testHeaderKey:testHeaderValue 將注入標頭 testHeaderKey,其值為 testHeaderValue。值應為百分比編碼。

validateNextUriSource

驗證查詢執行期間下一個 URI 中的主機和連接埠是否未變更。

followRedirects

停用 Presto 用戶端以避免因安全考量而追蹤重新導向。