はじめましてSE歴2年目でまだまだ未熟者です。
このたび業務でAWS Athenaでパーティションを作成するクエリを数年分用意して実行することになったのですがAthenaでは複数のクエリを実行できないため、自分が困ったので記事にしました。
Athenaとは
>標準 SQL を使用して Amazon S3 内のデータを直接分析することができるインタラクティブなクエリサービスです僕の中では、ログなどのデータに対してSQL文で検索、抽出ができるものといった認識です。(違ったらすみません。)
SQL Workbenchを使って複数のクエリをまとめて実行する。
先述の通りAthenaではSQLを1文ずつしか流せないので、今回はSQL WorkBenchというものを使いました。 こちらを使ってAthenaへ接続してSQLをまとめて実行するといった具合でやっていきます。事前に準備するもの
①[SQL Workbench](https://www.sql-workbench.eu/downloads.html)②JDBCドライバー(4.1系または4.2系)
どちらのバージョンでも動作するようです。(※JDKがインストールされてない場合はそちらも必要です)
私は4.1にしました。
ダウンロード後は適当なフォルダに入れます。(そのままでもいい)
例 C:\Driver\
③AWSアカウント情報
- Access key ID
- Secret access key
- クエリ結果出力用のS3Bucket(s3://hoge/)
アクセスキー及びシークレットアクセスキーが不明な場合はこちらを参照してください。
IAM ユーザーのアクセスキーの管理
設定方法
まず、ダウンロードしたSQL Workbenchのなかにあるsqlworkbench.jarを開きます。
下記のような画面が表示されたら、New profileを選択しましょう。
もし何も表示が無ければ「Select connection profile」画面の左上部を押して新しくプロジェクトを作ります。
設定が必要な項目は以下の6つです。
①ProjectName:任意
(AWS Athenaなど)
②Driver:画面左下のManage Driverを押して開いたウインドウから設定を行います。(下の画像参照)
さきほど事前に保存したローカル上のjdbcドライバーを追加する事により、フォルダのマークのドライバー一覧から選択してOKを押します。
OKを押した後は以下を設定していきます。
③URL:JDBCドライバーのバージョンにより設定が異なります。以下を参考に設定をお願いします。
4.1~の場合
jdbc:awsathena://athena.ap-northeast-1.amazonaws.com:443
4.2~の場合
jdbc:awsathena://AwsRegion=ap-northeast-1;
基本は東京リージョン(ap-northeast-1)だと思いますが異なるリージョンを利用されている場合は、ap-northeast-1の部分を各自変更してください。
④UserName:AWSのアクセスキー
⑤Password:AWSのシークレットアクセスキー
アクセスキー及びシークレットアクセスキーに関してはこちらを参照してください。
IAM ユーザーのアクセスキーの管理
⑥Extended properties:クエリ結果を保存しておくバケットを指定します。
・Property: s3_staging_dir or S3OutputLocation
・Value: クエリ結果を保存したいs3ディレクトリ(s3://hoge/)
Extended propertiesは必須項目なので設定しないと必ずエラーが起きます。
上記の6つの設定が終わって画面右下のtestを押下すると、「Connection to うんたらかんたら~~successful」というメッセージが表示されます。
エラーの場合は設定が間違っていますので設定を見直してください。
設定は以上です。
後は実行したい複数のSQL文(一つでも良い)を入力して
SQLタブ→Execute ALLを押したらAthenaへクエリを実行することができます。
お疲れ様でした。
参考元リンク
https://310ch.net/work/analytics/sql-workbench-amazon-athena