ジョブの失敗のトラブルシューティングと修復

Azure Databricks ジョブの実行中にタスクが失敗したことが (メールによる通知、監視ソリューション、Azure Databricks ジョブ UI などにより) 通知されたとします。 この記事の手順では、失敗の原因、検出された問題を修正するための推奨事項、失敗したジョブの実行を修復する方法の特定に役立つガイダンスを提供します。

失敗の原因を特定する

Azure Databricks ジョブ UI で失敗したタスクを見つけるには、次のようにします。

  1. サイドバーの Jobs Icon [ジョブ] をクリックしてください。

  2. [名前] 列で、ジョブ名をクリックします。 [実行] タブに、アクティブな実行と完了した実行が、失敗した実行も含めて表示されます。 [実行] タブのマトリックス ビューに、ジョブのタスクごとに成功および失敗した実行を含むジョブの実行履歴が表示されます。 タスクの実行が失敗したか、依存タスクが失敗したためにスキップされた可能性があります。 マトリックス ビューを使用すると、ジョブ実行のタスクの失敗をすばやく特定できます。

    Matrix view of job runs

  3. 失敗したタスクの上にマウス ポインターを合わせて、関連するメタデータを表示します。 このメタデータには、開始日と終了日、状態、期間、クラスターの詳細、場合によってはエラー メッセージが含まれます。

  4. 失敗の原因を特定するには、失敗したタスクをクリックします。 [タスクの実行の詳細] ページが表示され、タスクの出力、エラー メッセージ、関連するメタデータが表示されます。

失敗の原因を修正する

データ品質の問題、構成の誤り、コンピューティング リソースの不足など、いくつかの理由でタスクが失敗した可能性があります。 タスク失敗の一般的な原因を修正するために推奨される手順を次に示します。

  • 失敗がタスク構成に関連している場合は、[タスクの編集] をクリックします。 タスク構成が新しいタブで開きます。必要に応じてタスク構成を更新し、[タスクの保存] をクリックします。
  • 問題が、たとえば不十分なインスタンスなど、クラスター リソースに関連している場合は、次のようにいくつかのオプションがあります。
    • ジョブ クラスターを使用するようにジョブが構成されている場合は、共有の汎用クラスターの使用を検討します。
    • クラスター構成を変更します。 [タスクの編集] をクリックします。 [ジョブの詳細] パネルの [コンピューティング] の下で、[構成] をクリックしてクラスターを構成します。 ワーカーの数、インスタンスの種類、またはその他のクラスター構成オプションを変更できます。 また、[スワップ] をクリックして、別の使用可能なクラスターに切り替えることもできます。 使用可能なリソースを最適に使用するには、クラスター構成のベスト プラクティスを確認してください。
    • 必要に応じて、ワークスペースがデプロイされているクラウド アカウントとリージョンでリソース クォータを増やすように管理者に依頼します。
  • 最大同時実行数を超えたことが失敗の原因である場合は、次のいずれかを行います。
    • 他の実行が完了するまで待ちます。
    • [タスクの編集] をクリックします。 [ジョブの詳細] パネルで、[同時実行の編集] をクリックし、[同時実行の最大数] に新しい値を入力して、[確認] をクリックします。

場合によっては、外部データ ソースが使用できないなど、ジョブの上流に失敗の原因が存在するおそれがあります。 外部の問題が解決された後で、次のセクションで説明する実行の修復機能を利用できます。

失敗したタスクとスキップされたタスクを再実行する

失敗した原因を特定したら、失敗したタスクと依存タスクのサブセットのみを実行して、失敗した、または取り消されたマルチタスク ジョブを修復することができます。 この機能を使用すると、成功したタスクとそれに依存するタスクは再実行されないため、失敗したジョブの実行から回復するために必要な時間が短縮され、必要なリソースも削減されます。

ジョブの実行を修復する前に、ジョブまたはタスクの設定を変更できます。 失敗したタスクは、ジョブおよびタスクの現在の設定で再実行されます。 たとえば、ノートブックまたはクラスター設定へのパスを変更すると、タスクは、更新されたノートブックまたはクラスター設定で再実行されます。

[すべてのタスク実行の履歴] を、[タスク実行の詳細] ページで表示します。

Note

  • 1 つ以上のタスクがジョブ クラスターを共有する場合、修復実行によって新しいジョブ クラスターが作成されます。 たとえば、元の実行でジョブ クラスター my_job_cluster が使用された場合、最初の修復の実行では、新しいジョブ クラスター my_job_cluster_v1 が使用されます。これにより、最初の実行と修復の実行で使用されたクラスターおよびクラスター設定を簡単に確認できます。 my_job_cluster_v1 の設定は、my_job_cluster の現在の設定と同じです。
  • 修復は、2 つ以上のタスクを調整するジョブでのみサポートされます。
  • [実行] タブに表示される [期間] の値には、最初の実行が開始されてから最後の修復の実行が完了するまでの時間が含まれます。 たとえば、実行が 2 回失敗し、3 回目の実行で成功した場合、期間には、3 回すべての実行の時間が含まれます。

失敗したジョブの実行を修復するには:

  1. ジョブ実行テーブルの 開始時刻列で失敗した実行のリンクをクリックするか、マトリックス ビューで失敗した実行をクリックしてください。 [ジョブの実行の詳細] ページが表示されます。
  2. [実行の修復] をクリックします。 [ジョブの実行の修復] ダイアログが表示され、失敗したすべてのタスクと、再実行される依存タスクが一覧表示されます。
  3. 修復するタスクのパラメーターを追加または編集するには、[ジョブの実行の修復] ダイアログにそのパラメーターを入力します。 [ジョブの実行の修復] ダイアログに入力するパラメーターは、既存の値をオーバーライドします。 以降の修復の実行時に、[ジョブの実行の修復] ダイアログでキーと値をクリアすることにより、パラメーターを元の値に戻すことができます。
  4. [ジョブの実行の修復] ダイアログで [実行の修復] をクリックします。
  5. 実行の修復が完了すると、マトリックス ビューは修復された実行の新しい列で更新されます。 赤く表示されていた失敗したタスクが緑色になり、ジョブ全体の正常な実行を示します。

継続的なジョブエラーの表示と管理

連続ジョブの連続した失敗がしきい値を超えると、Azure Databricks ジョブでエクスポネンシャル バックオフが使用され、ジョブが再試行されます。 ジョブがエクスポネンシャル バックオフ状態の場合、[ジョブの詳細] パネルのメッセージには、次のような情報が表示されます。

  • 連続するエラーの数。
  • エラーなしでジョブが実行され、成功と見なされる期間。
  • 現在アクティブな実行がない場合の、次の再試行までの時間。

アクティブな実行を取り消し、再試行期間をリセットして、新しいジョブの実行を開始するには、[実行の再開] をクリックしてください。