はじめに
今回のシリーズはAWSの各種サービスを使ったデータ分析基盤構築です。
蓄積された膨大なデータをビジネスに利活用したいですよね?
例えば、データサイエンティストが分析・ML(機械学習)などで活用すると思います。
それには、分析パフォーマンスを上げるためにビッグデータを行指向(CSV、RDB)から列指向(DWH、データマート)にロードし直し、その前にデータを整えるETLというデータの抽出・加工・変換を行ったりと、分析しやすい形に整えておきます。
(これだけで気が遠くなりウンザリ → はい、挫折、、、)
今回はそんな貴方のために、サーバーレス(サーバー気にしなくていい)のAWS GlueというETLツールを使って、その手間を簡略化し、さらにS3に蓄積された膨大なデータを直接見れてしまうAmazon Athenaを使ってデータ分析基盤をサクッと作る方法がお伝えできればと思います。
今回のシリーズで利用する主なAWSサービスは、
S3、Glue、Athena、Lambda
シリーズ目次
- AWSでデータ分析基盤構築をサクッと始めてみる(1.データカタログ作成編(行指向))
- AWSでデータ分析基盤構築をサクッと始めてみる(2.行指向から列指向に変換編)
- AWSでデータ分析基盤構築をサクッと始めてみる(3.データカタログ作成編(列指向))
- AWSでデータ分析基盤構築をサクッと始めてみる(4.Athenaでアドホック分析編)
- AWSでデータ分析基盤構築をサクッと始めてみる(5.Lambdaで分析自動化編)
1. データカタログ作成編(行指向)
本章では、S3に蓄積された行指向データ(CSV形式)ファイルから一旦データカタログを作成しようと思ってます。
それでは、Glueのcrawlerを使って、データカタログ作成にチャレンジしましょう!
(1)行指向(CSV)データの準備
今回は下記のツールを使ってデータを作成
https://tm-webtools.com/Tools/TestData
(2)S3に保管
作成したCSVファイルをS3のバケットに保管
保管方法はAWS CLIでもAWSコンソールからでも可
※容量がもったいないので、csvファイルを圧縮してcsv.gzファイルに変換
7-Zipツール もしくはターミナルでgzipコマンドで作成
ex.)
・バケット名:test_bucket
・フォルダ名:s3://test_bucket/input/
(3)データカタログの作成(行指向)
ここでは、Glue crawlerを使ってCSV形式ファイルを取り込んだデータカタログを作成していきますので、まずはGlue画面を開いてください。
①まずはDatabaseを作成します
左のメニューから"Database"をクリックしてください。
Nameにデータベース名を入力します。
ex.) データベース名:testdb
②次に、Crawlerを作成します
左のメニューから"Crawlers"をクリックしてください。
③[Step1] データソース元を指定してください
”Add a data source”ボタンを押してデータソースを追加
”S3 path”に上記(2)で保管したcsv.gzファイルのフォルダ(S3 URL)を指定
④[Step2] 次に進んで、IAMロールを作成してください
”Create new IAM role”ボタンを押してIAMロールを追加。
⑤[Step3] 次に進んで、上記で作成したデータベースを指定し、テーブル名をつけてください
ex.) テーブル名:input_table
・Crawler scheduleは”On demand”を選択
⑥[Step4] 次に進んで、最後に入力内容を確認し、Crawlerを完成させます
”Create crawler”ボタンを押す
これで、クローラーの完成です!
⑦クローラーを実行します(ドキドキ)
作成したクローラーを画面の”Run crawler”ボタンを押す
※ここで、クローラーによるデータカタログの作成が始まります
⑧データカタログの確認をします
実行完了後、上記で作成したデータベースを開きデータカタログが作成されていることを確認
※ハマりポイント:
恐らく「403 error」とかでデータカタログテーブルが作成されない、、、
対策は以下:
・クローラー画面からアタッチしたIAMロールを選択し、ポリシーを編集
・ポリシーの"Resource"にデータソース元(csv.gzファイルが保管されているところ)のS3 URL(csvフォルダ)を追加
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::test_bucket/input/*",
"arn:aws:s3:::test_bucket/output/*"
]
}
]
これで、行指向のデータカタログの完成です!
本章はこれで終わりです。どうもお疲れ様でした。
引き続き、次の章にチャレンジしてください!
AWSでデータ分析基盤構築をサクッと始めてみる(2.行指向から列指向に変換編)
参考文献
- AWS公式サイト
AWS Glue