AWS GlueとLake Formationを試してみた(Vol.7)

Glue and Lake Formation

前回のハンズオンの続きです。

データガバナンスにどんなサービスを使い、どのようなことが出来るのか。

以下のYoutubeを参考にさせていただき学習します。

以下の流れで構成されており、今回は「Glueワークフロー」です。

  • Glue Data Catalog
  • Data Access Control
  • Glue Crawler
  • Glue Data Catalog Revisited
  • Glue Job and Glue Studio
  • Glue Workflow
  • Advanced Topics
目次

Glueワークフロー

  • ジョブクローラーをオーケストレートすることでETLパイプラインを構築するために利用されます。
  • 単一のエンティティとして実行され、いつでもパイプラインの進行状況を監視できます。
  • サーバレスです。コンピュートリソースを自分でプロビジョニングする必要はありません。
Glueワークフローのイメージ

提供元:https://www.youtube-nocookie.com/embed/QX8stvTQ57o

主なコンポーネントは2つ

ワークフローの主なコンポーネントは2つ。トリガーノードです。

トリガー
  • ワークフローやクローラー、ジョブの実行をキックします。
  • 手動、イベント、スケジュールのいずれかに基づいて開始します。
ノード

ジョブやクローラーを実行する主体となります。

ワークフローの設計

Glueワークフロー設計の例

提供元:https://www.youtube-nocookie.com/embed/QX8stvTQ57o

最初のトリガーだけ「手動」「スケジュール」「イベント」に基づいて開始しますが、2つ目以降のトリガーは前のノードの実行結果に基づいて開始します。

ワークフローは、「分岐」と「マージ」を提供します。

Glueワークフローの例

提供元:https://www.youtube-nocookie.com/embed/QX8stvTQ57o

上の例では以下のフローになります。

  • ワークフローはスケジュールから開始され、2つのジョブと1つのクローラーを並列で実行する
  • ALLトリガーは、前にある2つのジョブと1つのクローラ―がすべて終了したら実行される
  • ALLトリガーから1つのジョブと1つのクローラーを並列実行する

ワークフロープロパティ

  • 1つのプロパティはキーとバリューのペアで構成され、ワークフロー内で共有する
  • ワークフロー内のすべてのジョブがビジネスロジックに利用できる
  • ジョブはプロパティの値を取得したり、更新したりできる

ハンズオン

今回の内容です。

  • Glueクローラーとジョブをオーケストレイトするワークフローを作成

開始前の状況

これまでのハンズオンで以下の状態になっています。

RDS

サーバレスのtestdbinstanceテーブルにemploysテーブルが存在します。

現在のRDS状況1
現在のRDS状況2
現在のRDS状況3

Glue

RDS(testdbinstanceデータベース)のemployeesテーブルのレコードをfirstname列とlastname列のみSELECTして、S3のemployeesフォルダに書き込むETLジョブrdstos3jobが存在します。

現在のGlue状況1

S3

employeesフォルダ配下に、Glueジョブによって作成されたファイルが存在します。

現在のS3状況1
現在のS3状況2

Lake Formation

データカタログされたemployeesテーブルが存在します。

現在のLake Formation状況1

[S3] employeesフォルダ配下を空にする

[S3] employeesフォルダ配下を空にする1
[S3] employeesフォルダ配下を空にする2

[Lake Formation] データカタログのemployeesテーブルを削除

[Lake Formation] データカタログのemployeesテーブルを削除1

Drop権限がないと怒られます。。

[Lake Formation] データカタログのemployeesテーブルを削除2

権限を与えます。

[Lake Formation] データカタログのemployeesテーブルを削除3

ログインしたIAMユーザに、(データカタログの)employeesテーブルへのDrop権限を与えます。

あくまでデータカタログのテーブルに対するDROPね。

[Lake Formation] データカタログのemployeesテーブルを削除4

再びemployeesテーブルのDropを試行します。

[Lake Formation] データカタログのemployeesテーブルを削除5

今度は削除できました。

[Lake Formation] データカタログのemployeesテーブルを削除6

[Glue] ワークフロー作成および実行

今回はプロパティ追加することなく、単純なワークフローを構築します。

[Glue] ワークフロー作成および実行1

作成したワークフローにロジックを追加します。

[Glue] ワークフロー作成および実行2

ワークフロー開始のためのトリガーを追加します。

[Glue] ワークフロー作成および実行3

今回はオンデマンドでトリガー実行とします。

[Glue] ワークフロー作成および実行4

ワークフローグラフが表示されますので「Add Node」を押下します。

[Glue] ワークフロー作成および実行5

rdscrawlerを追加します。

[Glue] ワークフロー作成および実行6

続いてトリガーを追加します。

[Glue] ワークフロー作成および実行7

前のイベントが1つしかないので、ここではどちらでもよいです。「Any」を選択します。

[Glue] ワークフロー作成および実行8

続いてrdstos3jobを追加します。

[Glue] ワークフロー作成および実行9
[Glue] ワークフロー作成および実行10

ワークフローが完成したので実行します。

[Glue] ワークフロー作成および実行11

実行開始したらHistoryへ移動してみましょう。

[Glue] ワークフロー作成および実行12

「View run details」を押下すると、実行状況を確認できます。

[Glue] ワークフロー作成および実行13

ワークフローの実行を完了しました。

[Glue] ワークフロー作成および実行14

[Lake Formation] テーブル追加の確認

データカタログのemployeesテーブルが追加されていることが確認できます。

[Glue] ワークフロー作成および実行15

[S3] データ追加の確認

employeesフォルダ配下にデータが追加されていることが確認できます。

[Glue] ワークフロー作成および実行16

以上、Glueワークフローを用いて、RDSのテーブルからデータカタログのemployeesテーブルを作成し、データをS3にコピーすることが出来ました。

おわりに

今回は、特定のGlueジョブとGlueクローラーを組み合わせたETLパイプラインとして、Glueワークフローを構築しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

個人ブログ「Tech Up Labo」を運営する、おーすけ と申します。

IT業界に携わるエンジニアとして、クラウドサービスを用いたデータ分析関連、Webサービス関連の開発において、私自身が学んだことや実際に経験したこと、あるいはその他の情報に基づき情報発信しております。

これらの情報が私自身の備忘録となる一方で、時には他の方が抱える問題に対する解決の一助になることを願っております。

■保有資格
AWS Certified Solutions Architect Associate
JDLA Deep Learning For GENERAL 2020#2
JDLA Deep Learning For ENGINEER 2022#2
PMP、Python3 エンジニア認定基礎、他

コメント

コメント一覧 (1件)

目次