AWS
glue

Glueの使い方的な㊵(Workflowsでジョブフローの可視化)


アップデート

TODO


Glue Workflows とは

Glueのジョブとクローラーのワークフローを作る

GlueのTrigger機能をクローラーにも対応させ、状態とフローを可視化させる

Glueのリソースだけでフローを作りたい場合に有用

しっかりとエラーハンドリングしたい時、通知飛ばしたい時、他のAWSリソースと連携させたフローを作りたい場合はStepFunctionsがよい


Workflowsを作る


内容

以下の記事で書いたクローラーやジョブを使いワークフローを作ります

https://qiita.com/pioho07/items/a24d188d67fe97034b34

クローラー -> ジョブ(PySpark) -> ジョブ(PythonShell)

シンプルにS3のcsvファイルをクローリングしてparquetにしてファイル名をリネームするです


  • 1つ目のクローラー:S3のcsvファイルをクローリングしGlue Data Catalogのテーブル(スキーマ)を作る

  • 2つ目のジョブ:PySparkでフォーマットをparquetにしたり、country,year,month,day,hourでパーティション化したり、圧縮してS3に出力

  • 3つ目のジョブ:PythonShellで出力されたファイルをリネームする

※詳細なコードの内容は上のリンクを参照ください


リソース名


クローラー名

se2_in0


ジョブ名

se2_job15

se2_job16


Workflow作成

Glueの画面の左メニューから"Workflows"をクリックし[Add workflow]をクリック

スクリーンショット 0031-06-12 12.29.13.png

以下を入力して[Add workflow]をクリック

Workflow name: se2_workflow1

スクリーンショット 0031-06-12 21.07.51.png

作成されたworkflowの"se2_workflow1"にチェックを入れ、画面下の[Graph]タブをクリックし[Add trigger]をクリックする

※ここで作ったTriggerはGlueのTriggerとして作られます

スクリーンショット 0031-06-12 21.09.16.png

"Add new"タブをクリックし、Nameに"se2_wf_trigger1"を入れ、Trigger typeを"On demand"にチェックを入れ、[Add]をクリック

※"Clone existing"タブで既存のTriggerからコピーもできます

スクリーンショット 0031-06-12 21.17.00.png

こんなのが出来きる

スクリーンショット 0031-06-12 21.18.44.png

とりあえず全画面表示にもしてみて、"Add node"の箇所をクリック

スクリーンショット 0031-06-12 21.19.45.png

ポップアップ画面が出るので、"Crawlers"タブをクリックし、該当のクローラー"se2_in0"にチェックを入れ、[Add]をクリックする

※"Jobs"タブをクリックすればジョブを選べる

スクリーンショット 0031-06-12 21.20.15.png

左の丸いのがスタート、虫みたいなアイコンがクローラー

スクリーンショット 0031-06-12 21.22.14.png

クローラーのアイコンをクリックすると以下のようになり、"Add trigger"をクリックする

スクリーンショット 0031-06-12 21.23.17.png

ポップアップ画面でnameに"se2_wf_trigger2"を入れ[Add]をクリックする

スクリーンショット 0031-06-12 21.24.35.png

このように一瞬変な感じになったと思うが、気にせず右側の"Add node"をクリックする

スクリーンショット 0031-06-12 21.29.51.png

"Jobs"のタブをクリックし、該当のジョブ"se2_job15"にチェックを入れ、[Add]をクリックする

スクリーンショット 0031-06-12 21.30.21.png

2つ目のジョブが出来る

スクリーンショット 0031-06-12 21.32.23.png

あとは同じ要領で3つ目のジョブを追加する

スクリーンショット 0031-06-12 21.33.55.png

数珠つなぎにしたいジョブまたはクローラーをTriggerでつなげていく流れです。


Workflow実行

対象のworkflowにチェックを入れ、[Action]->[Run]をクリック

スクリーンショット 0031-06-12 21.34.59.png

対象のworkflowにチェックを入れ、画面下の"History"タブをクリックし、”RunID"にチェックを入れ、[View run detail]をクリックする

スクリーンショット 0031-06-12 21.36.03.png

Workflowの状態が確認できる

緑色は完了を表しクローラーが完了していることがわかり、青色が実行中を表し次のジョブが実行中であることがわかる

※これ今の所ほっておいてもステータスが変わらないので手動でリロードが必要そう

スクリーンショット 0031-06-12 21.37.42.png


こちらも是非

Glueの使い方的な㉜(Python Shellを使う)

https://qiita.com/pioho07/items/a24d188d67fe97034b34

Glueの使い方まとめ

https://qiita.com/pioho07/items/32f76a16cbf49f9f712f