DataGripからAmazon Athenaを利用する

こんにちは。データサイエンティスト兼、データ基盤エンジニアのshobyです。

今回は、DataGripからAmazon Athenaを使用する方法をご紹介します。

概要

  • DataGripとAthenaについて
  • DataGripからAthenaを利用する

DataGripとAthenaについて

DataGripはJetBrains製のCross PlatformなSQL用IDE、AthenaはS3に対してクエリが発行できるサーバーレスの分析環境です。

DataGripからAthenaを利用することで、IDEならではの強力なコード補完機能を利用しつつ、S3上のファイルに対してクエリを発行することができるようになります。

DataGripやAthenaの詳細に関しては以下の記事をご参照ください。

tech.tvisioninsights.co.jp

tech.tvisioninsights.co.jp

DataGripからAthenaを利用する

AthenaはAWSからJDBC Driverが提供されており、DataGripから簡単に使用することができます。

  1. JDBC Driverをダウンロード
  2. AWSのkeyを発行
  3. DataGripに設定

JDBC Driverをダウンロード

以下のページからAthenaのJDBC Driverをダウンロードし、任意のディレクトリに置きます。

docs.aws.amazon.com

最新版のDriverはJDK 8.0以上が必要なため、入っていなければ事前にインストールしておきましょう。

homebrew caskを使用する場合は以下の通りです。

brew cask install java

AWSのkeyを発行

Athena Full Accessの権限を持つkeyを発行します。

AthenaにはGlue、S3など複数のサービスの権限が必要であり、必要最低限の権限を付与するのは難易度が高いため、Athena Full Accessの権限を付与するのをおすすめします。

Athena Full Accessは、AthenaとGlueに対しては強い権限を持ちますが、S3にはAthena専用のバケットに結果を書き込む程度の権限しか持ちません。

DataGripに設定

DataGrip公式ブログの記事を参考に設定を行います。

Using AWS Athena from IntelliJ-based IDE | DataGrip Blog

Driverの追加

Data GripにAthena Driverの追加を行います。

まず、File > DataSourcesの"+"ボタンからDriverの追加を選びます。

f:id:shoby:20181003185107p:plain

Additional Filesから任意のディレクトリに設置したJDBC Driverファイルを追加し、Classに com.simba.athena.jdbc42.Driver を選びます。

f:id:shoby:20181003185458p:plain

また、URL Templateには、以下の文字列をセットします

jdbc:awsathena://athena.[{host::eu-west-1}].amazonaws.com[:{port::443}][\?<;,UID={user:param},PWD={password:param},{:identifier}={:param}>]

Data Sourceの追加

Athena Driverを使い、DataSourceを追加します。

まず、GeneralタブのHostにAWSのリージョン名、UserにAccess Key Id、PasswordにSecret Access Keyを追加します。

f:id:shoby:20181003190125p:plain

続いて、AdvancedタブのS3OutputLocationにAthenaの実行結果を出力するS3バケットのPathを追加します。

f:id:shoby:20181003190539p:plain

入力する値は、AWSコンソール上からAthenaを開き、設定にあるデフォルトPathです。

f:id:shoby:20181003190743p:plain

Test Connectionを押して問題なく接続できれば設定は完了です。

クエリの実行

あとは、通常のDBと同様にDataGrip上から統一したインターフェースでクエリの実行ができます。

まとめ

DataGripからAthenaを利用することで、DataGripの強力なコード補完機能を活用しつつ、統一したインターフェースでクエリが実行できるようになります。