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」をクリック
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も含めてアクセスコントロールのやり方はしっかり調べないと、初めはストレスフルかも...。