すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Presto への JDBC を使用したアクセス

最終更新日:Jan 11, 2025

Presto サービスを含む E-MapReduce(EMR)クラスターを作成した後、Presto が提供する JDBC ドライバーを使用して Presto データベースに接続できます。その後、データベース内のデータに対して複雑なデータクエリ、分析、および処理操作を実行したり、クエリ結果を Java アプリケーションに統合したりできます。

Maven の pom.xml ファイルへの JDBC ドライバーの依存関係の追加

EMR クラスターのバージョンに基づいて、必要な Presto JDBC ドライバーの依存関係を pom.xml ファイルに追加できます。

コンポーネントバージョン

JDBC ドライバー

ドライバクラス名

0.2XX

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

com.facebook.presto.jdbc.PrestoDriver

Java バージョンは Java 8 以降である必要があり、すべてのユーザーに system.jdbc テーブルに対するクエリ権限が付与されている必要があります。

データベースへの接続

次の形式で指定された JDBC URL を使用してデータベースに接続できます。

jdbc:presto://<COORDINATOR>:<PORT>/[CATALOG]/[SCHEMA]

JDBC URL の例:

jdbc:presto://master-1-1:8889               # デフォルトのカタログとデフォルトのスキーマを使用してデータベースに接続します。
jdbc:presto://master-1-1:8889/hive          # hive という名前のカタログとデフォルトのスキーマを使用してデータベースに接続します。
jdbc:presto://master-1-1:8889/hive/default  # hive という名前のカタログと default という名前のスキーマを使用してデータベースに接続します。

JDBC 接続パラメーター

JDBC ドライバーはさまざまなパラメーターをサポートしています。次のいずれかの方法を使用して、パラメーターを DriverManager に渡すことができます。

  • パラメーターをプロパティとして DriverManager に渡します。

    String url = "jdbc:presto://<マスターノードの名前>:8889/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "presto");
    Connection connection = DriverManager.getConnection(url, properties);
    // ...... データベースに対する操作を実行します。
  • パラメーターを URL パラメーターとして渡します。

    String url = "jdbc:presto://<マスターノードの名前>:8889/hive/default?user=presto";
    Connection connection = DriverManager.getConnection(url);
    // ...... データベースに対する操作を実行します。

次の表に、一般的なパラメーターを示します。

パラメーター

データ型

説明

user

STRING

ID 認証と承認に使用されるユーザー名。

password

STRING

Lightweight Directory Access Protocol(LDAP)認証に使用されるパスワード。

socksProxy

STRING:NUMBER

SOCKS プロキシサーバーのアドレスとポート。例: localhost:1080。

httpProxy

STRING:NUMBER

HTTP プロキシサーバーのアドレスとポート。例: localhost:8888。

SSL

BOOLEAN

Java アプリケーションが HTTPS に基づいてデータベースに接続するために SSL を有効にするかどうかを指定します。デフォルト値: false。

SSLKeyStorePath

STRING

キーストアファイルを保存するために使用されるパス。

SSLKeyStorePassword

STRING

キーストアファイルにアクセスするために使用されるパスワード。

SSLTrustStorePath

STRING

Java トラストストアファイルを保存するために使用されるパス。

SSLTrustStorePassword

STRING

Java トラストストアファイルにアクセスするために使用されるパスワード。

KerberosRemoteServiceName

STRING

Kerberos サービスの名前。

KerberosPrincipal

STRING

Kerberos プリンシパルの名前。

KerberosUseCanonicalHostname

BOOLEAN

正規ホスト名を使用するかどうかを指定します。デフォルト値: false。

KerberosConfigPath

STRING

Kerberos 構成ファイルを保存するために使用されるパス。

KerberosKeytabPath

STRING

Kerberos キータブファイルを保存するために使用されるパス。

KerberosCredentialCachePath

STRING

Kerberos 資格情報キャッシュを保存するために使用されるパス。

次のコードは、JDBC ドライバーを使用してデータベースに接続する方法を示しています。

Connection connection = null;
Statement statement = null;
try {
    // コンポーネントの JDBC URL。
    String url = "jdbc:presto://<マスターノードの名前>:8889/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "presto");
    // 接続オブジェクトを作成します。
    connection = DriverManager.getConnection(url, properties);
    // ステートメントオブジェクトを作成します。
    statement = connection.createStatement();
    // クエリストテートメントを実行します。
    ResultSet rs = statement.executeQuery("select * from t1");
    // 結果を返します。
    int columnNum = rs.getMetaData().getColumnCount();
    int rowIndex = 0;
    while (rs.next()) {
        rowIndex++;
        for(int i = 1; i <= columnNum; i++) {
            System.out.println("Row " + rowIndex + ", Column " + i + ": " + rs.getInt(i));
        }
    }
} catch(SQLException e) {
    LOG.ERROR("例外がスローされました。", e);
} finally {
  // ステートメントオブジェクトを破棄します。
  if (statement != null) {
      try {
        statement.close();
    } catch(Throwable t) {
        // No-ops
    }
  }
  // 接続を閉じます。
  if (connection != null) {
      try {
        connection.close();
    } catch(Throwable t) {
        // No-ops
    }
  }
}

参照

単純なクエリのみを実行する場合は、CLI を使用して Presto に接続することをお勧めします。詳細については、「CLI を使用して Presto に接続する」をご参照ください。