ジョブの失敗のトラブルシューティングと修復
Databricks ジョブの実行でタスクが失敗したという通知を (電子メール通知、モニタリング ソリューション、またはDatabricksジョブ UI などを通じて) Databricksたとします。 この記事のステップでは、失敗の原因を特定するのに役立つガイダンス、見つかった問題を修正するための提案、失敗したジョブ実行を修復する方法を提供します。
失敗の原因を特定する
Databricks ジョブ UI で失敗したタスクを見つけるには:
クリックサイドバーでジョブが実行されます。
[名前]列でジョブ名をクリックします。 このタブには、失敗した実行を含む、アクティブな実行と完了した実行が表示されます。 [実行]タブのマトリックス ビューには、各ジョブ タスクの成功および失敗した実行を含む、ジョブの実行の履歴が表示されます。 タスクの実行は、依存タスクが失敗したために失敗したか、スキップされたために失敗する可能性があります。 マトリックス ビューを使用すると、ジョブ実行のタスクの失敗をすばやく特定できます。
失敗したタスクにマウスを合わせると、関連するメタデータが表示されます。 このメタデータには、開始日と終了日、ステータス、期間クラスターの詳細、場合によってはエラー メッセージが含まれます。
失敗の原因を特定するには、失敗したタスクをクリックします。 タスク実行の詳細ページが表示され、タスクの出力、エラー メッセージ、および関連するメタデータが表示されます。
失敗の原因を修正する
タスクは、データ品質の問題、構成ミス、コンピュート リソースの不足など、いくつかの理由で失敗した可能性があります。 タスク失敗の一般的な原因を修正するために、次のステップが推奨されます。
失敗がタスク構成に関連している場合は、 「タスクの編集」をクリックします。 タスク構成が新しいタブで開きます。 必要に応じてタスク構成を更新し、 「タスクの保存」をクリックします。
問題がクラスター リソースに関連している場合 (インスタンス不足など)、いくつかのオプションがあります。
ジョブがジョブ クラスターを使用するように構成されている場合は、共有の汎用クラスターの使用を検討してください。
クラスター構成を変更します。 タスクの編集をクリックします。 [ジョブの詳細]パネルの [コンピュート] で、 [構成]をクリックしてクラスターを構成します。 ワーカーの数、インスタンス タイプ、またはその他のクラスター構成オプションを変更できます。 「スワップ」をクリックして、使用可能な別のクラスターに切り替えることもできます。 利用可能なリソースを最適に活用できるようにするには、 クラスター構成のベスト プラクティスを確認してください。
必要に応じて、管理者にリソース クォータ (クラウド上でアカウント) とワークスペースが展開されているリージョンを増やすように依頼してください。
最大実行実行数を超えたことが障害の原因である場合は、次のいずれかを行ってください。
他の実行が完了するまで待ちます。
タスクの編集をクリックします。 [ジョブの詳細]パネルで、 [実行の編集] をクリックし、 [最大ライナー実行]に新しい値を入力して、 [確認]をクリックします。
場合によっては、失敗の原因がジョブの上流にある可能性があります。たとえば、外部データ ソースは利用できません。 外部の問題が解決された後でも、次のセクションで説明する修復実行機能を利用できます。
失敗したタスクとスキップされたタスクを再実行する
失敗の原因を特定した後、失敗したタスクのサブセットと依存タスクのみを実行することで、失敗またはキャンセルされたマルチタスク ジョブを修復できます。 成功したタスクとそれに依存するタスクは再実行されないため、この機能により、失敗したジョブ実行から回復するために必要な時間とリソースが削減されます。
ジョブ実行を修復する前に、ジョブまたはタスクの設定を変更できます。 失敗したタスクは、現在のジョブおよびタスク設定で再実行されます。 たとえば、ノートブックまたはクラスター設定へのパスを変更すると、更新されたノートブックまたはクラスター設定でタスクが再実行されます。
タスク実行の詳細 ページで 、すべてのタスク実行の履歴 を表示します。
注:
1 つ以上のタスクがジョブ クラスターを共有している場合、修復実行によって新しいジョブ クラスターが作成されます。 たとえば、元の実行でジョブ クラスター
my_job_cluster
が使用されていた場合、最初の修復実行では新しいジョブ クラスターmy_job_cluster_v1
が使用され、最初の実行と修復実行で使用されたクラスターとクラスターの設定を簡単に確認できます。my_job_cluster_v1
の設定は、現在のmy_job_cluster
の設定と同じです。修復は、2 つ以上のタスクを調整するジョブでのみサポートされます。
「実行」タブに表示される「期間」の値には、最初の実行が開始された時間から、最新の修復実行が終了するまでの時間が含まれます。 たとえば、実行が 2 回失敗し、3 回目の実行で成功した場合、期間には 3 回すべての実行時間が含まれます。
失敗したジョブを修復するには、次を実行します。
「ジョブ実行」テーブルの「開始時刻」列で失敗した実行のリンクをクリックするか、マトリックス ビューで失敗した実行をクリックします。 ジョブ実行の詳細ページが表示されます。
修復実行をクリックします。 修復ジョブ実行ダイアログが表示され、失敗したすべてのタスクと再実行される依存タスクが一覧表示されます。
修復するタスクの課題を追加または編集するには、修復ジョブ実行ダイアログに課題を入力します。 [修復ジョブ実行]ダイアログに入力した値は、既存の値を上書きします。 その後の修復実行では、修復ジョブ実行ダイアログでキーと値をクリアすることで、問題を元の値に戻すことができます。
修復ジョブ実行ダイアログで修復実行をクリックします。
修復実行が完了すると、マトリックス ビューが更新され、修復された実行の新しい列が表示されます。 失敗したタスクが赤色で表示されていた場合は緑色に変わり、ジョブ全体の実行が成功したことを示します。
継続的なジョブの失敗の表示と管理
連続したジョブの連続した失敗がしきい値を超えると、Databricks ジョブは 指数関数的バックオフ を使用してジョブを再試行します。 ジョブがエクスポネンシャルバックオフ状態の場合、 ジョブの詳細 パネルに次のような情報が表示されます。
連続した失敗の数。
ジョブがエラーなしで実行され、成功したと見なされるまでの期間。
現在アクティブな実行がない場合に、次の再試行までの時間。
アクティブな実行をキャンセルし、再試行期間をリセットして、新しいジョブ実行を開始するには、 「実行の再開」をクリックします。