たそらぼ

日頃思ったこととかメモとか。

AWS Athenaを使ってみた

AWS Athenaを使ってみた。
aws.amazon.com

Athenaの特徴

・サーバーレスなのでインスタンスを立てなくて良い
・S3やGlueに直付けできる。出力はQuickSightで見れる
・クエリでスキャンしたデータに対して課金(なのでちゃんと計画的に使わないと大変なことに...)

サンプルデータをクエリにかけるまでにやったこと

①IAMにポリシーをアタッチ
i)「IAMユーザー」>「アクセス権限を追加」で追加。
・AWSQuicksightAthenaAccess(←Quicksight使わないならいらないかも)
・AmazonAthenaFullAccess
・AmazonS3FullAccess


②S3にクエリを実行したいデータを格納
i)今回はとりあえずirisデータをcsvで格納。
UCI Machine Learning Repository: Iris Data Set
 同じIAMからAthenaを実行する際には、バケットポリシーやアクセス権限はいじらなくてOK


③Athenaでテーブルの作成
i)左側の「Tables」>「Create table」>「from S3 bucket data」をクリック
f:id:tasotasoso:20181027205411p:plain

ii)Step1:Name&Location
 Database:既存のデータベースか新しいデータベースかにTableを作るよう指定
 Table Name:テーブル名の指定
 Location of Input Data Set:「s3://$バケット名/$データのあるディレクトリ」
 ↑ここでAccess Deniedにむちゃくちゃハマった。

iii)Step2:Data Format
 データ形式の選択、今回はcsvで入れたのでcsvで。

iv)Step3:Columns
 カラム名と型の指定。

v)Step 4: Partitions
 クエリでスキャンするデータ量を制限するためにパーティションを設定できる。
データのパーティション分割 - Amazon Athena

vi)出てきたクエリにおかしなところがなければ、「Run query」でクエリ実行。
 ちゃんと設定できて入ればテーブルができる。


④Athenaでテーブルに対してクエリの実行
i)新しいタブを開いてクエリを書く

ii)Run queryで実行

感想

特徴2点目のS3やGlueに直付け可能なのが嬉しいらしい。
個人的にはサーバーレスなのが楽で好きだけど、
クエリを書くのがうまくないので、課金が心配。

初心者なのもあって、S3との連携にむちゃくちゃハマった。
IAMも含めてアクセスコントロールのやり方はしっかり調べないと、初めはストレスフルかも...。