特定の順序で複数の Spark ジョブを実行する必要がある場合 (例えば、データインジェストジョブの後に変換ジョブ、そしてレポートジョブを実行する場合) は、ワークフローを使用して依存関係チェーンを定義し、実行を自動化します。このトピックでは、EMR Serverless Spark でワークフローを作成、実行、およびモニターする方法について説明します。
基本概念:
ワークフロー: 依存関係によってリンクされ、スケジュールまたはオンデマンドで実行されるジョブのパイプラインです。
ノード: ワークフロー内の単一のジョブです。ノードは、実行順序を定義するためにアップストリーム/ダウンストリームの関係によって接続されます。
[ワークフロー実行]: ワークフローの単一実行です。各実行は記録され、[ワークフロー実行] タブで表示できます。
前提条件
開始する前に、以下を準備してください。
ワークスペース。詳細については、「ワークスペースの管理」をご参照ください。
開発および公開されたジョブ。
ワークフローの作成
[ワークフロー] ページに移動します。
E-MapReduce (EMR) コンソールにログインします。
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
[Spark] ページで、使用するワークスペースの名前をクリックします。
[EMR Serverless Spark] ページの左側のナビゲーションウィンドウで、[オペレーションセンター] > [ワークフロー] を選択します。
「ワークフロー」タブで、「ワークフローの作成」をクリックします。
[ワークフローの作成] パネルで、パラメーターを設定し、[次へ] をクリックします。[スケジューリングタイプ] が [スケジューラー] の場合、次を設定します。
スケジュール時間: 実行頻度です。日は、1 日 1 回、固定時刻に実行されます。時間は、日単位のウィンドウ内で N 時間ごとに実行されます。分は、日単位のウィンドウ内で N 分ごとに実行されます。
スケジュール開始日時: スケジュールされた実行が開始される日時です。デフォルトは現在の時刻です。
重要ワークフローが作成された後、[スケジュール状態] スイッチを [ワークフロー] タブでオンにします。これを行わないと、ワークフローはスケジュール時刻に実行されません。
パラメーター 説明 名前 ワークフロー名。ワークスペース内で一意である必要があります。 リソースキュー ワークフローのデフォルトのリソースキューです。ノードレベルのリソースキューは、この設定をオーバーライドします。 その他の設定 > スケジューリングタイプ ワークフローが本番環境で実行される方法。有効な値: なし(手動)(手動でトリガーされ、デフォルト)および スケジューラー(分単位、時間単位、または日単位の自動実行)。以下の「スケジューリングの種類の表」を参照してください。 失敗後のリトライ 失敗したノードをリトライする回数です。デフォルト: リトライなし。ノードレベルのリトライ設定は、この値をオーバーライドします。 失敗通知 ワークフローが失敗した場合に通知するメールアドレスです。 タグ ワークフローを識別するためのキーと値のペアです。 スケジューリングタイプ 動作 追加の必須パラメーター [なし (手動)] (デフォルト) 手動で実行をトリガーします。 — スケジューラー 分単位、時間単位、または日単位で自動的に実行します。 スケジューリング時間 と スケジューリング開始時刻 ワークフローにノードを追加します。ノードはパイプライン内のジョブを表します。アップストリーム/ダウンストリームの関係を通じて接続し、実行順序を定義します。
キャンバス上で、キャンバスの下部にある [ノードの追加] をクリックします。
[ノードの追加] パネルで、パラメーターを設定します。
パラメーター
説明
ソースファイルパス
このノードで実行するジョブのパスです。ジョブは公開済みである必要があります。
ノードタイプ
指定されたパスのジョブから自動的に推測されます。
ノード名
ソースファイルパス から自動入力されます。必要に応じてカスタマイズしてください。
上流ノード
このノードを実行する前に完了する必要があるノードです。現在のワークフロー内のノードを指定する必要があります。最初のノードの場合は空白のままにしてください。
リトライ回数
ワークフローレベルのリトライ回数がデフォルト値として使用されます。デフォルトではリトライは行われません。
タイムアウト (秒)
シングルノードの実行時間の上限です。デフォルトでは制限なしです。
サブスクリプション
ノードが指定された状態に到達した際に通知を送信するメールアドレスです。
タグ
ノードのタグです。各ノードには、デフォルトで
workflow_nameタグおよびtask_nameタグが含まれます。リソースキュー
このノードのリソースキューです。ワークフローレベルのリソースキューがデフォルト値として使用されます。ノードレベルで設定すると、その後ワークフローレベルのリソースキューを変更しても、この設定は維持されます。
説明SQL ジョブの場合、[タスク構成] セクションで追加のパラメーターを構成します。デフォルト値はジョブレベルの構成と一致します。詳細については、「デフォルト設定の管理」をご参照ください。
[保存] をクリックします。繰り返して、さらにノードを追加します。
ワークフローを公開します。
右上隅で、[Publish Workflow] をクリックします。
「[公開]」ダイアログボックスで備考を入力し、[OK] をクリックします。
ワークフローの実行
各ワークフロー実行では、実行レコードが生成されます。実行履歴は、ワークフローの詳細ページの [ワークフロー実行] タブで表示できます。
ワークフローのデバッグ
本番環境で実行する前に、ワークフローの最新バージョンをデバッグします。
[操作] 列で、ワークフローの [編集] をクリックします。表示されるページで、ワークフロー名の横にある [デバッグ] をクリックします。

「デバッグ」ダイアログボックスで、開発環境リソースキューを選択し、[実行] をクリックします。
スケジュール実行
「[スケジュールタイプ]」が「[スケジューラ]」に設定され、かつ「[スケジュールステータス]」スイッチがオンになると、ワークフローは設定された時間に自動的に実行されます。

手動実行
[ワークフロー] タブで、ワークフロー名をクリックします。
右上隅で、[実行] をクリックします。
[実行] ダイアログボックスで、[スケジューリング方法] を設定し、[OK] をクリックします。
スケジューリング方法 の値:
| 値 | 使用するタイミング | 動作 |
|---|---|---|
| 手動実行 (デフォルト) | スケジュールに関係なく、ワークフローを今すぐ実行します。 | すぐに開始します。 |
| バックフィル | 過去の期間のデータを再処理します。例えば、スケジュールされた実行がスキップされた場合や、ジョブが修正され過去のデータに対して再実行する必要がある場合などです。 | 指定された範囲内の各スケジューリング間隔で実行を生成します。 |
「[Backfill]」を選択すると、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| サイクル | 過去の期間です。この範囲内に該当する各スケジューリング間隔で実行が生成されます。範囲は現在の時刻より前でも可能です。${ds} などの時間変数は、対応するサイクル時間に自動的に置き換えられます。 |
| リソースキュー | ワークフローに構成されたリソースキューがデフォルトです。必要に応じて別の本番キューを選択します。 |
| 備考 | 実行の管理とトラブルシューティングに役立つ説明です。 |
| その他 > 失敗通知 | バックフィルが失敗した場合に通知するメールアドレスです。 |
ワークフロー実行ステータスの確認
[ワークフロー実行ステータス] 列は、各ワークフロー実行のステータスを示します。[ワークフロー ノード実行ステータス] 列は、実行内の個々のノードのステータスを示します。実行レコードおよびノードレベルの実行ログの詳細については、「ワークフローの実行とワークフロー ノードの実行の管理」をご参照ください。

ワークフロー実行ステータス
| 色 | ステータス |
|---|---|
| 青 | 実行中 |
| 緑 | 成功 |
| 赤 | 失敗 |
| 紫 | 保留中 |
ワークフロー ノードのステータス
| 色 | ステータス |
|---|---|
| 青 | 実行中 |
| 緑 | 成功 |
| 赤 | 失敗 |
| 黄 | リトライ中 |
| 紫 | 保留中 |
次のステップ
ワークフローの概念と用語については、「用語」をご参照ください。
ワークフロー実行レコードとノード実行の詳細を表示および管理するには、「ワークフロー実行とワークフローノード実行の管理」をご参照ください。
参考資料
「基本概念」