AWSでデータ分析基盤構築をサクッと始めてみる（1.データカタログ作成編（行指向））

# はじめに
今回のシリーズはAWSの各種サービスを使ったデータ分析基盤構築です。
蓄積された膨大なデータをビジネスに利活用したいですよね？
例えば、データサイエンティストが分析・ML（機械学習）などで活用すると思います。
それには、分析パフォーマンスを上げるためにビッグデータを行指向（CSV、RDB）から列指向（DWH、データマート）にロードし直し、その前にデータを整えるETLというデータの抽出・加工・変換を行ったりと、分析しやすい形に整えておきます。
（これだけで気が遠くなりウンザリ → はい、挫折、、、）
今回はそんな貴方のために、サーバーレス（サーバー気にしなくていい）のAWS GlueというETLツールを使って、その手間を簡略化し、さらにS3に蓄積された膨大なデータを直接見れてしまうAmazon Athenaを使ってデータ分析基盤をサクッと作る方法がお伝えできればと思います。

今回のシリーズで利用する主なAWSサービスは、
S3、Glue、Athena、Lambda

そして、システム構成をイメージすると、こんな感じでしょうか
![system-fig3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102468/3bd7c671-f147-eaa5-4075-07080b990043.png)


# シリーズ目次
<!-- タイトルとアンカー名を編集 -->
1. [AWSでデータ分析基盤構築をサクッと始めてみる（1.データカタログ作成編（行指向））](https://qiita.com/maechan55/items/d69ebcae324771f14a4e)
2. [AWSでデータ分析基盤構築をサクッと始めてみる（2.行指向から列指向に変換編）](https://qiita.com/maechan55/items/608c11382cecf6bdb0a4)
3. [AWSでデータ分析基盤構築をサクッと始めてみる（3.データカタログ作成編（列指向））](https://qiita.com/maechan55/items/33fa79330c76f1e59166)
4. [AWSでデータ分析基盤構築をサクッと始めてみる（4.Athenaでアドホック分析編）](https://qiita.com/maechan55/items/84cfb8d5347d71dc3f71)
5. [AWSでデータ分析基盤構築をサクッと始めてみる（5.Lambdaで分析自動化編）](https://qiita.com/maechan55/items/ed3f40128d684100e3ea)


<!-- 各チャプター -->
# 1. データカタログ作成編（行指向）
本章では、S3に蓄積された行指向データ（CSV形式）ファイルから一旦データカタログを作成しようと思ってます。
それでは、Glueのcrawlerを使って、データカタログ作成にチャレンジしましょう！

（１）行指向（CSV）データの準備
　　今回は下記のツールを使ってデータを作成
　　https://tm-webtools.com/Tools/TestData
（２）S3に保管
　　作成したCSVファイルをS3のバケットに保管
　　保管方法はAWS CLIでもAWSコンソールからでも可
　　※容量がもったいないので、csvファイルを圧縮してcsv.gzファイルに変換
　　　7-Zipツール もしくはターミナルでgzipコマンドで作成
　　ex.)
　　・バケット名：test_bucket
　　・フォルダ名：s3://test_bucket/input/
（３）データカタログの作成（行指向）
　　ここでは、Glue crawlerを使ってCSV形式ファイルを取り込んだデータカタログを作成していきますので、まずはGlue画面を開いてください。
　　①まずはDatabaseを作成します
　　　左のメニューから"Database"をクリックしてください。
　　　Nameにデータベース名を入力します。
　　　　ex.)　データベース名：testdb
![Glue_Crawler4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102468/790abb0c-c55f-ef06-b269-48a66af75320.png)
　　②次に、Crawlerを作成します
　　　左のメニューから"Crawlers"をクリックしてください。
![Glue_Crawler3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102468/da8cc915-8a7c-add0-ea15-701a6886d817.png)
　　③[Step1] データソース元を指定してください
　　　”Add a data source”ボタンを押してデータソースを追加
　　　”S3 path”に上記（２）で保管したcsv.gzファイルのフォルダ（S3 URL）を指定
![Glue_Crawler1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102468/73d8c5dd-46ee-6ea9-1572-40a7be8d828c.png)
　　④[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.行指向から列指向に変換編）](https://qiita.com/maechan55/items/608c11382cecf6bdb0a4)
# 参考文献
- AWS公式サイト
[AWS Glue](https://aws.amazon.com/jp/glue/)