はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- 必須S3バケットの作成・ファイルのアップロードをしたことがある
- あると良い列・型などデータベースの基本用語の理解
※ このハンズオンは すべてコンソールだけで完結します。クローラーは使わず、すべて手動で作成します。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
データを分析する前に、「どこに何のデータがあるか」を整理しておく必要があります。AWS Glueの「データカタログ」は、データベースとテーブルという単位で、データの場所・列構成などのメタデータを一元管理する仕組みです。
データカタログ自体はデータを保存しません。今回はS3にCSVファイルを置いたうえで、Glueコンソールから手動でデータベースとテーブルを1つずつ作成し、データカタログがどのような情報を持っているかを確認します。
データカタログに登録すれば、データの中身も一緒に保存されるの?
いいえ。データカタログが持っているのは、データの場所(S3のパス)、列名・型、フォーマットなどの「メタデータ」だけです。実際のデータはS3に置かれたままで、データカタログはそこへの「索引」のような役割を持ちます。
このテーブルは、すぐにSQLで問い合わせられるの?
Glueのデータカタログに登録したテーブルは、Amazon Athenaなど対応するサービスから直接問い合わせの対象として使えます。データカタログを作ることと、実際に問い合わせることは別の作業ですが、登録しておけば問い合わせの準備が整った状態になります。
S3に配置したCSVファイルに対して、Glueコンソールからデータベースとテーブルを手動で作成し、テーブルの詳細画面で列定義・データの場所などのメタデータが正しく登録されていることを確認する。
つくる構成
データカタログは、S3にある実データを「メタデータとして参照」するだけで、コピーは作りません。
(コピーはしない)
要件
以下の要件を満たし、データカタログの構造を確認してください。
| No | 要件 |
|---|---|
| 1 | S3バケットにCSVファイルを1つ配置する(東京リージョン、ヘッダー行あり、例:3列程度)。 |
| 2 | Glueデータカタログにデータベースを1つ作成する(名前は自由、例:handson_glue_db)。 |
| 3 | そのデータベースの中に、CSVファイルに対応するテーブルを手動で作成する(列名・型・データの場所・フォーマットを指定)。 |
| 4 | 作成したテーブルの詳細画面で、列定義とデータの場所(S3パス)が正しく表示されることを確認する。 |
構築の進め方
「データを置く」→「データベースを作る」→「テーブルを手動で作る」→「メタデータを確認する」という順番で進めます。
- フェーズ1 — S3にデータを置く
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
CSVファイルを作成してアップロードする
ローカルで、ヘッダー行付きの簡単なCSVファイルを作成します(例:氏名・部署・入社年の3列)。S3バケットを1つ作成し(名前は一意に、例:
glue-demo-yourname)、フォルダ(例:employees/)にアップロードします。 - フェーズ2 — データベースを作成する
-
Glueデータカタログにデータベースを作成する
Glueコンソールの「データカタログ」→「データベース」から「データベースを追加」を選び、名前を自由に決めます(例:
handson_glue_db)。 - フェーズ3 — テーブルを手動で作成する
-
テーブルを手動で追加する
作成したデータベースの中で「テーブルを追加」を選び、「手動で追加」を選びます。テーブル名を決め、データの場所に手順2のS3パス(例:
s3://glue-demo-yourname/employees/)を指定し、フォーマットをCSVに設定します。 -
列を定義する
CSVファイルの列に対応する列名・データ型を、ヘッダー行の内容に合わせて1つずつ追加します。
- フェーズ4 — メタデータを確認する
-
テーブルの詳細画面を確認する
作成したテーブルを開き、「スキーマ」タブで列名・型の一覧、「詳細」タブでデータの場所(S3パス)が、それぞれ正しく登録されていることを確認します。
これがゴールテーブルの定義(メタデータ)が、実際のCSVファイルの構造と一致していることを確認できたら、このハンズオンの目的は達成です。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。
「テーブルを作ったのに、データが見つからない」
指定したS3パスの末尾のスラッシュの有無や、CSVファイルが置かれているフォルダの階層が、実際の構成と一致しているか見直しましょう。
「列は登録できたが、後で問い合わせると値がずれる」
テーブル定義の列の順序が、CSVファイルの実際の列の順序と一致しているか見比べてみましょう。ヘッダー行とデータ行で列の数が違う場合も、ずれの原因になります。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。
- データベース一覧に、作成したデータベースが表示されている。
- テーブル一覧に、作成したテーブルが表示されている。
- テーブル詳細の「スキーマ」タブで、列名・型の一覧が確認できる。
- テーブル詳細の「詳細」タブで、データの場所(S3パス)が確認できる。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- データカタログと、データベース管理システム(例:MySQLのようなRDBMS)は、どこが同じでどこが違うでしょうか。
ヒント
どちらも「データベース」「テーブル」という言葉を使いますが、実際のデータをどこに保存しているか、という違いに注目してみましょう。 - 手動でテーブルを1つずつ作る方法は、ファイルの数が増えたときにどんな課題が出てくるでしょうか。
ヒント
10個、100個のファイルがあった場合、今回の手順を何回繰り返す必要があるか考えてみましょう。 - メタデータと実データを分離して管理する設計には、どんな利点があるでしょうか。
ヒント
同じデータに対して、複数の異なるテーブル定義(見方)を用意できる、という可能性を考えてみましょう。
後片づけ
作成したリソースを順番に削除します。
- テーブルを削除する:Glueコンソールのテーブル一覧から削除します。
- データベースを削除する:テーブルを削除した後、データベースを削除します。
- S3バケットを空にして削除する:アップロードしたCSVファイルを削除してから、バケット本体を削除します。
コストに関する注意: Glueデータカタログは、一定数までのデータベース・テーブルなどの保存・アクセスが無料利用枠の対象になっており、今回のような少量の利用であれば料金はかからないことが多いです。S3の保存容量・リクエストにも別途料金がかかりますが、少量であれば無料利用枠の範囲内に収まることが多いです。検証が終わったら、上の「後片づけ」に沿って忘れずに削除しましょう。最新の料金は AWS の公式料金ページで確認してください。