Databricks ジョブ内のタスクのフローを制御する
一部のジョブは、完了する必要があるタスクの一覧にすぎません。 タスク間の依存関係を指定することで、タスクの実行順序を制御できます。 タスクを順番または並列で実行するように構成できます。
ただし、条件付きタスク、エラー修正、またはクリーンアップを含む分岐フローを作成することもできます。 Azure Databricks には、ジョブ内のタスクフローを制御する機能が用意されています。 次のトピックでは、タスクのフローを制御する方法について説明します。
再試行の回数
再試行では、タスクがエラー メッセージで失敗した場合に、特定のタスクを再実行する回数を指定します。 多くの場合、エラーは一時的であり、再起動によって解決されます。 Structured Streaming でのスキーマの進化など、Azure Databricks の一部の機能では、再試行でジョブを実行して環境をリセットし、ワークフローを続行することを想定しています。
タスクの再試行を指定すると、エラーが発生した場合、タスクは指定された回数まで再起動します。 すべてのジョブ構成でタスクの再試行がサポートされているわけではありません。 「再試行ポリシーのを設定する」を参照してください。
連続トリガー モードで実行すると、Databricks は指数バックオフで自動的に再試行します。 「連続ジョブのエラーはどのように処理されるか」を参照してください。.
条件付きタスクの場合に実行する
タスクの種類 場合は、 実行を使用して、他のタスクの結果に基づいて後のタスクの条件を指定できます。 ジョブにタスクを追加し、アップストリームに依存するタスクを指定します。 これらのタスクの状態に基づいて、1 つ以上のダウンストリーム タスクを実行するように構成できます。 ジョブでは、次の依存関係がサポートされます。
- すべて成功しました
- 少なくとも 1 つが成功した
- 失敗したものはありません
- すべて完了
- 少なくとも 1 つ失敗しました
- すべて失敗しました
タスクの依存関係を構成する を参照してください
if/else 条件付きタスク
If/else タスクの種類を使用して、何らかの値に基づいて条件を指定できます。 If/else タスク を使用してジョブに分岐ロジックを追加するを参照してください。
ジョブは、ロジックで定義した taskValues
をサポートし、タスクからジョブ環境に何らかの計算または状態の結果を返すことができます。 if/else 条件は、taskValues
、ジョブ パラメーター、または動的な値に対して定義できます。
Azure Databricks では、条件に対して次のオペランドがサポートされています。
==
!=
>
>=
<
<=
次も参照してください。
- タスク値を使用してタスク間で情報を渡す
- 動的な値の参照とは
- ジョブ をパラメーター化する
For each タスク
For each
タスクを使用して、別のタスクをループで実行し、タスクの各イテレーションに異なるパラメーター セットを渡します。
For each
タスクをジョブに追加するには、For each
タスクと、入れ子になった タスクを定義する必要があります。 入れ子になったタスクは、For each
タスクのイテレーションごとに実行するタスクであり、Databricks の標準的なタスクの種類の 1 つです。 入れ子になったタスクにパラメーターを渡すには、複数のメソッドがサポートされています。
「ループでパラメーター化された Azure Databricks ジョブ タスクを実行する」を参照してください。