アップデート
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]をクリック

以下を入力して[Add workflow]をクリック
Workflow name: se2_workflow1

作成されたworkflowの"se2_workflow1"にチェックを入れ、画面下の[Graph]タブをクリックし[Add trigger]をクリックする
※ここで作ったTriggerはGlueのTriggerとして作られます

"Add new"タブをクリックし、Nameに"se2_wf_trigger1"を入れ、Trigger typeを"On demand"にチェックを入れ、[Add]をクリック
※"Clone existing"タブで既存のTriggerからコピーもできます

こんなのが出来きる

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

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

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

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

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

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

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

2つ目のジョブが出来る

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

数珠つなぎにしたいジョブまたはクローラーをTriggerでつなげていく流れです。
Workflow実行
対象のworkflowにチェックを入れ、[Action]->[Run]をクリック

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

Workflowの状態が確認できる
緑色は完了を表しクローラーが完了していることがわかり、青色が実行中を表し次のジョブが実行中であることがわかる
注意点
- これ今の所ほっておいてもステータスが変わらないので手動でリロードが必要そう

-
途中で止められない。ジョブ単位なら止められるがワークフロー単位で止められない
-
GUIの使いやすさは人それぞれということで慣れればいいのかな
こちらも是非
Glue Workflows の公式ドキュメント
Performing Complex ETL Activities Using Workflows in AWS Glue
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/orchestrate-using-workflows.html
Glueの使い方的な㉜(Python Shellを使う)
https://qiita.com/pioho07/items/a24d188d67fe97034b34
Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f