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

Databricks ジョブの実行でタスクが失敗したことが (たとえば、電子メール通知、モニタリング ソリューション、または Databricks ジョブ UI を介して) 通知されたとします。 この記事の手順では、エラーの原因を特定するのに役立つガイダンス、見つかった問題を修正するための提案、および失敗したジョブ 実行を修復する方法について説明します。

失敗の原因を特定する

Databricks ジョブ UI で失敗したタスクを見つけるには:

  1. サイドバーの [ジョブ ジョブアイコン ]をクリックします 。

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

    ジョブ実行のマトリックスビュー
  3. 失敗したタスクにカーソルを合わせると、関連するメタデータが表示されます。 このメタデータには、開始日と終了日、ステータス、期間クラスターの詳細、および場合によってはエラーメッセージが含まれます。

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

失敗の原因を修正する

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

  • 失敗がタスク設定に関連している場合は、[ タスクの編集] をクリックします。 タスク設定が新しいタブで開きます。 必要に応じてタスク設定を更新し、[ タスクの保存] をクリックします。

  • 問題がクラスターリソースに関連している場合 (インスタンスの不足など)、いくつかのオプションがあります。

    • ジョブがジョブ クラスターを使用するように構成されている場合は、共有の汎用クラスターの使用を検討してください。

    • クラスターの構成を変更します。 [ タスクの編集] をクリックします。 ( ジョブの詳細 ) パネルの [コンピュート] で、[Configure] ( 設定 ) をクリックしてクラスターを設定します。 ワーカーの数、インスタンスタイプ、またはその他のクラスター設定オプションを変更できます。 [ スワップ ] をクリックして、別の使用可能なクラスターに切り替えることもできます。 使用可能なリソースを最適に活用するには、 クラスター構成のベスト プラクティスを確認してください。

    • 必要に応じて、ワークスペースがデプロイされているクラウド上でのアカウントとリージョンのリソース クォータを増やすように管理者に依頼します。

  • 並列実行の最大数を超えたことが障害の原因である場合は、次のいずれかを実行します。

    • 他の実行が完了するのを待ちます。

    • [ タスクの編集] をクリックします。 「 ジョブの詳細 」パネルで、「並列 実行の編集」をクリックし、「 最大並列実行数」に新しい値を入力して、「 確認」をクリックします。

場合によっては、失敗の原因がジョブの上流にあることがあります。たとえば、外部データソースは使用できません。 次のセクションで説明する修復実行機能は、外部の問題が解決された後でも利用できます。

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

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

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

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

  • 1 つ以上のタスクがジョブ クラスターを共有している場合、修復を実行すると新しいジョブ クラスターが作成されます。 たとえば、元の実行でジョブ クラスター my_job_clusterが使用されている場合、最初の修復実行では新しいジョブ クラスター my_job_cluster_v1が使用され、最初の実行と修復の実行で使用されたクラスターとクラスターの設定を簡単に確認できます。 my_job_cluster_v1 の設定は、 my_job_clusterの現在の設定と同じです。

  • 修復は、2 つ以上のタスクを調整するジョブでのみサポートされます。

  • [実行] タブに表示される [期間] の値には、最初の実行が開始された時刻から最新の修復実行が終了した時刻が含まれます。たとえば、実行が 2 回失敗し、3 回目の実行で成功した場合、期間には 3 回の実行すべての時間が含まれます。

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

  1. ジョブ実行テーブルの [ 開始時刻 ] 列で失敗した実行のリンクをクリックするか、マトリックス ビューで失敗した実行をクリックします。 [ ジョブ実行の詳細 ] ページが表示されます。

  2. [ 実行の修復] をクリックします。 [ ジョブ実行の修復] ダイアログが表示され、失敗したすべてのタスクと再実行される依存タスクが一覧表示されます。

  3. 修復するタスクのパラメーターを追加または編集するには、[ ジョブの実行の修復 ] ダイアログにパラメーターを入力します。 [ジョブ実行の修復] ダイアログに入力したパラメーターは、既存の値をオーバーライドします。後続の修復実行では、[ ジョブの実行の修復 ] ダイアログでキーと値をクリアすることで、パラメーターを元の値に戻すことができます。

  4. [ジョブ実行の修復] ダイアログで [実行の修復] をクリックします。

  5. 修復実行が完了すると、マトリックス ビューが更新され、修復された実行の新しい列が表示されます。 赤色だった失敗したタスクは緑色になり、ジョブ全体が正常に実行されたことを示します。

継続的なジョブの失敗の表示と管理

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

  • 連続したエラーの数。

  • ジョブがエラーなしで実行され、成功したと見なされる期間。

  • 現在アクティブな実行がない場合の次の再試行までの時間。

アクティブな実行をキャンセルし、再試行期間をリセットして、新しいジョブ実行を開始するには、[ 実行の再開] をクリックします。