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