今回やったこと構成図
Athenaとは
- Amazon Athenaは、標準的なSQLを使用してS3のデータを直接分析することができるサーバレスで従量課金のクエリサービス(GCPのBigQueryと似た感じ)
- AthenaではS3に保存したCSVデータを紐付けて、Athena上にデータベース・テーブルを作成すれば、そこにSQLを実行してデータを参照・抽出できる
- S3上のデータにはCSVファイルやJSONファイル、parquet形式のデータといった「整形済み」のデータであることが前提
- スクショのようにデータソースからテーブルを作成を選択すると、データベースとテーブルをセットで作成でき、実際にS3に保存されている CSVデータなどのカラムに合わせて手動でデータベースと、テーブルを作成できる。(今回は手動で作成せずにGlueのクローラでスキャンして生成する)
Glueとは
https://aws.amazon.com/jp/glue/
https://www.fenet.jp/aws/column/aws-beginner/307/
- AWS Glue の機能概要は以下
- データの検出と整理
- 分析用データの変換、準備、クリーニング
- データパイプラインの構築とモニタリング
今回触れる部分は、主に
「データの検出と整理」
- 簡単にいうと、S3に入っている構造化データ(今回はCSVデータ)をクローラーでスクリーニングして自動的にスキーマ情報を推測し、AWS Glue Data Catalog のスキーマ情報に統合(Athenaのデータベースにテーブルを自動作成)
- 自動作成されたテーブルをAthenaでSQLクエリでデータ取得
AWS Glue とAthenaの連携
https://dev.classmethod.jp/articles/athena-table-datacatalog-etc-summary/
- Glueのクローラーを実行して指定したS3バケット内のCSVデータをスキャンして、Athena上に作成しているDatabase内に、Athenaでクエリを叩ける形に正規化したテーブルを作成させる
- クローラーを実行すればクローラーを紐付けたデータベース内にテーブルを自動で作成してくれる
- クローラーはS3バケットのデータの構造に変更があれば、データのスキーマ情報を自動で変更したりしてくれる
- クローラは定期実行しても良いし、都度手動でコンソールから実行するでも良い
- S3にあるCSVデータをAthenaでSQLクエリを叩いてデータを参照・抽出できるようにする
AWS Glueで表示されるデータベースやテーブルはAthenaで作ったものと同じ
厳密にいうと、AWS Glueデータカタログで作ったものは連動する(デフォルトでAWS GlueデータカタログがAWSアカウント毎に用意されているので、デフォルトで勝手に連動している)
AthenaからSQLを実行できるようにする
Glueでクローラーを作成
- data source の追加
- CSVデータが格納されているS3バケットを選択
- Glue上からAthenaにDatabase/tableを追加
- 今回はクローラーを回すタイミングについて必要なときに手動実行する設定にする
クローラーの実行
https://aws.amazon.com/jp/glue/pricing/
最小課金単位の10分で、
10(分) / 60 × 1(DPU) × 0.44ドル = 0.073ドル程度
- 実行
- 完了
Athenaでクエリ実行
SELECT * FROM データベース名;