Netbeans + JDBC + Amazon Athena でつまづいたところ
もうそこらじゅうにサンプルがあるけど知識が少なすぎてアレだったので一応つまづいたところをふまえてメモ。
前提
とりあえずもう Web コンソールから SQL 実行できるとする。DB名は logs
としてある。
リージョン US Standard でバケットを作っておく
JDBC経由で実行した結果は得られるんだが、それをS3に保存することは必須になっている。そしてちゃんとAmazon Athenaが動くリージョンじゃないとダメらしい(エラーになる)。リージョンを US Standard
としてS3バケットを作成する。
プロジェクト作成
Netbeans を起動して新規プロジェクト > Java > Javaアプリケーション
コードのコピペ
Amazon Athena に JDBC 接続する | Developers.IO を参考にした。
コピペする。
認証設定
認証はJDBCドライバに渡すプロパティ一式のなかに、 aws_credentials_provider_arguments
というプロパティに値を渡すことで aws_credentials_provider_class
のコンストラクタを指定できるようだ。
ようだ・・・が、いろいろあってこれを用いられなかったのでこのアクセスキーとシークレットアクセスキーを用いる方法でいく。
Accessing Amazon Athena with JDBC — User Guide
上記ページを参考にプロパティ user
にアクセスキー、同 password
にシークレットアクセスキーを設定した。
info.put("s3_staging_dir", "s3://us-standar-region-phx-athena");
info.put("user", "AWSACCESSKEYID");
info.put("password", "AWSSECRETACCESSKEY");
ライブラリの追加
- Accessing Amazon Athena with JDBC — User Guide からJDBCドライバを持ってくる
- AWS SDK for Java | AWS からAWS SDKを持ってくる
- ログ出すモードのとき、このクラスが無いとエラーになっちゃったので必要に応じて Apache Commons Logging - Download Apache Commons Logging から
commons-logging-1.2-bin.zip
をもってくる
上記3つ解凍して、それぞれのjarをプロジェクトに追加する。Netbeasでプロジェクト右クリ > プロパティ > ライブラリ > JAR/フォルダの追加 > を3度
SQLの実行
Webコンソールではデフォルトデータベースが正しく指定されているが、コレ経由だとちゃんと指定しないとダメぽ。(デフォルトDB指定できるだろうからまぁそれやりゃいいんだろうけど)
例えば
select * from target_table limit 3;
は
select * from logs.target_table limit 3;
こんな感じで。
Author And Source
この問題について(Netbeans + JDBC + Amazon Athena でつまづいたところ), 我々は、より多くの情報をここで見つけました https://qiita.com/PharaohKJ/items/98e6942d87260401c558著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .