このセクションの情報を使用して Amazon Athena JDBC 3.x ドライバーを開始します。
インストール手順
JDBC 3.x ドライバーは、カスタムアプリケーションまたはサードパーティの SQL クライアントで使用できます。
カスタムアプリケーションの場合
ドライバー jar とその依存関係を含む .zip
ファイルをダウンロードします。依存関係にはそれぞれ独自の .jar
ファイルがあります。ドライバー jar を依存関係としてカスタムアプリケーションに追加します。別のソースからアプリケーションにその依存関係を既に追加しているかどうかに基づいて、ドライバー jar の依存関係を選択的に追加します。
サードパーティ製 SQL クライアントの場合
ドライバーの uber jar ファイルをダウンロードし、サードパーティ SQL クライアントの指示に従ってそのクライアントに追加します。
ドライバーの実行
ドライバーを実行するには、カスタムアプリケーションまたはサードパーティの SQL クライアントを使用できます。
カスタムアプリケーションの場合
JDBC インターフェイスを使用してプログラムから JDBC ドライバーを操作します。次のコードは、カスタム Java アプリケーションの例を示しています。
public static void main(String args[]) throws SQLException {
Properties connectionParameters = new Properties();
connectionParameters.setProperty("Workgroup", "primary");
connectionParameters.setProperty("Region", "us-east-2");
connectionParameters.setProperty("Catalog", "AwsDataCatalog");
connectionParameters.setProperty("Database","sampledatabase");
connectionParameters.setProperty("OutputLocation","s3://amzn-s3-demo-bucket");
connectionParameters.setProperty("CredentialsProvider","DefaultChain");
String url = "jdbc:athena://";
AthenaDriver driver = new AthenaDriver();
Connection connection = driver.connect(url, connectionParameters);
Statement statement = connection.createStatement();
String query = "SELECT * from sample_table LIMIT 10";
ResultSet resultSet = statement.executeQuery(query);
printResults(resultSet); // A custom-defined method for iterating over a
// result set and printing its contents
}
サードパーティ製 SQL クライアントの場合
使用している SQL クライアントのマニュアルに従ってください。通常は、SQL クライアントのグラフィカルユーザーインターフェイスを使用してクエリを入力および送信します。クエリ結果は同じインターフェイスに表示されます。
ドライバーの設定
接続パラメータを使用して Amazon Athena JDBC ドライバーを設定できます。サポートされている接続パラメータについては、「Amazon Athena JDBC 3.x 接続パラメータ」を参照してください。
カスタムアプリケーションの場合
カスタムアプリケーションの JDBC ドライバーの接続パラメータを設定するには、次のいずれかの操作を行います。
-
パラメータ名およびその値を
Properties
オブジェクトに追加します。Connection#connect
を呼び出すとき、そのオブジェクトを URL と一緒に渡します。例については、ドライバーの実行 のサンプルの Java アプリケーションを参照してください。 -
接続文字列 (URL) では、次の形式を使用してパラメータ名およびその値をプロトコルプレフィックスの直後に追加します。
<parameterName>
=<parameterValue>
;次の例のように、各パラメーター名/パラメータ値のペアの末尾にはセミコロンを使用します。セミコロンの後には、空白を入れないでください。
String url = "jdbc:athena://WorkGroup=primary;Region=us-east-1;...;";AthenaDriver driver = new AthenaDriver();Connection connection = driver.connect(url, null);
注記
パラメータを接続文字列および
Properties
オブジェクトの両方で指定する場合、接続文字列の値が優先されます。両方に同じパラメータを指定することはお勧めしません。 -
次の例のように、パラメータ値を引数として
AthenaDataSource
のメソッドに追加します。AthenaDataSource dataSource = new AthenaDataSource(); dataSource.setWorkGroup("primary"); dataSource.setRegion("us-east-2"); ... Connection connection = dataSource.getConnection(); ...
サードパーティ製 SQL クライアントの場合
使用している SQL クライアントの指示に従ってください。通常、クライアントはパラメータ名とその値を入力するグラフィカルユーザーインターフェイスを用意します。
Athena JDBC v2 ドライバーからのアップグレード
JDBC バージョン 3 の接続パラメータのほとんどは、バージョン 2 (Simba) JDBC ドライバーとの下位互換性があります。つまり、バージョン 2 の接続文字列はバージョン 3 のドライバーで再利用できることを意味します。ただし、一部の接続パラメータは変更されています。これらの変更は本書で説明されています。バージョン 3 の JDBC ドライバーにアップグレードするときは、必要に応じて既存の設定を更新してください。
ドライバークラス
一部の BI ツールでは、JDBC ドライバー .jar
ファイルからドライバークラスを指定するように求められます。ほとんどのツールはこのクラスを自動的に見つけます。バージョン 3 ドライバーのクラスの完全修飾名は com.amazon.athena.jdbc.AthenaDriver
です。バージョン 2 ドライバーでは、クラスは com.simba.athena.jdbc.Driver
でした。
接続文字列
バージョン 3 ドライバーは、JDBC 接続文字列 URL の先頭にあるプロトコルに jdbc:athena://
を使用します。バージョン 3 ドライバーはバージョン 2 プロトコル jdbc:awsathena://
もサポートしていますが、バージョン 2 プロトコルの使用は非推奨になっています。定義されていない動作を避けるため、バージョン 3 は、バージョン 2 (または jdbc:awsathena://
で始まる接続文字列を受け入れるその他のドライバー) が DriverManagerjdbc:awsathena://
で始まる接続文字列を受け入れません。
認証情報プロバイダー
バージョン 2 ドライバーは、完全修飾名を使用してさまざまな認証情報プロバイダー (例: com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain
) を特定します。バージョン 3 ドライバーは短い名前 (例: DefaultChain
) を使用します。新しい名前は、各認証情報プロバイダーの対応するセクションで説明されています。
以前の AWS SDK for Java から AWSCredentialsProvider インターフェイスを実装するのではなく、新しい AWS SDK for Java から AwsCredentialsProvider
PropertiesFileCredentialsProvider
は、JDBC 3.x ドライバーではサポートされていません。このプロバイダーは JDBC 2.x ドライバーで使用されていましたが、サポート終了間近の AWS SDK for Java の以前のバージョンに属しています。JDBC 3.x ドライバーで同じ機能を実現するには、代わりに AWS 設定プロファイルの認証情報 プロバイダーを使用してください。
ログレベル
次のテーブルには、JDBC バージョン 2 とバージョン 3 のドライバーにある LogLevel
パラメータの違いが示されています。
JDBC ドライバーバージョン | パラメータ名 | パラメータタイプ | デフォルト値 | 使用できる値 | 接続文字列の例 |
---|---|---|---|---|---|
v2 | LogLevel |
オプションです。 | 0 | 0~6 | LogLevel=6; |
v3 | LogLevel |
オプションです。 | TRACE | OFF、ERROR、WARN、INFO、DEBUG、TRACE | LogLevel=INFO; |
クエリ ID の取得
バージョン 2 ドライバーでは、Statement
インスタンスを com.interfaces.core.IStatementQueryInfoProvider
にアンラップします。これは #getPReparedQueryId
および #getQueryId
の 2 つのメソッドを持つインターフェイスです。これらのメソッドを使用し、実行されたクエリのクエリ実行 ID を取得できます。
バージョン 3 ドライバーでは、Statement
、PreparedStatement
、ResultSet
インスタンスを com.amazon.athena.jdbc.AthenaResultSet
インターフェイスにアンラップします。このインターフェイスには #getQueryExecutionId
という 1 つのメソッドがあります。