JDBCドライバ

Prestoは、JDBCドライバを使用してJavaからアクセスできます。 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

たとえば、example.netポート8080で実行されているPrestoに、カタログhiveとスキーマsalesを使用して接続するには、次のURLを使用します。

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に渡されるプロパティとして設定できる様々なパラメータをサポートしています。次の2つの例は同等です。

// 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 KeyStoreファイルの場所。

SSLKeyStorePassword

KeyStoreのパスワード。

SSLTrustStorePath

HTTPSサーバー証明書の検証に使用されるJava TrustStoreファイルの場所。

SSLTrustStorePassword

TrustStoreのパスワード。

KerberosRemoteServiceName

PrestoコーディネーターのKerberosサービス名。このパラメータはKerberos認証に必要です。

KerberosPrincipal

Prestoコーディネーターへの認証時に使用するプリンシパル。

KerberosUseCanonicalHostname

ホスト名を最初にIPアドレスに解決してから、そのIPアドレスの逆DNSルックアップを実行することで、Prestoコーディネーターの正規ホスト名をKerberosサービスプリンシパルに使用します。これはデフォルトで有効になっています。

KerberosConfigPath

Kerberos設定ファイル。

KerberosKeytabPath

Kerberos keytabファイル。

KerberosCredentialCachePath

Kerberos資格情報キャッシュ。

extraCredentials

外部サービスへの接続のための追加の資格情報。extraCredentialsは、キーと値のペアのリストです。例:foo:bar;abc:xyzは、資格情報abc=xyzfoo=barを作成します。

customHeaders

JDBCドライバを通じて挿入するカスタムヘッダー。customHeadersは、キーと値のペアのリストです。例:testHeaderKey:testHeaderValueは、値testHeaderValueを持つヘッダーtestHeaderKeyを挿入します。値はパーセントエンコードする必要があります。

validateNextUriSource

次のURIのホストとポートがクエリ実行中に変更されていないことを検証します。

followRedirects

セキュリティ対策として、Prestoクライアントによるリダイレクトの追従を無効にします。