Databricks ジョブの監視と可観測性
この記事では、Azure Databricks UI で、アクセスできるジョブの表示、ジョブの実行履歴の表示、ジョブの実行の詳細表示に使用できる機能について説明します。 ジョブの通知を構成するには、「ジョブに通知を追加する」を参照してください。
Databricks CLI を使用してジョブを表示し、ジョブを実行する方法について学習するには、CLI コマンド databricks jobs list -h
、databricks jobs get -h
、および databricks jobs run-now -h
を実行します。 Jobs API の使用方法については、「Jobs API」をご覧ください。
system.lakeflow
スキーマにアクセスできる場合は、アカウント全体からジョブの実行とタスクのレコードを表示およびクエリすることもできます。 「ジョブ システム テーブル リファレンス」を参照してください。 また、ジョブ システム テーブルを課金テーブルと結合して、アカウント全体のジョブのコストを監視することもできます。 「システム テーブルを使用してジョブのコストとパフォーマンスを監視する」を参照してください。
ジョブの表示
アクセスできるジョブのリストを表示するには、サイドバーの [ワークフロー] をクリックします。 ワークフロー UI の [ジョブ] タブには、ジョブの作成者、ジョブのトリガー (存在する場合)、最後の 5 回の実行の結果など、使用可能なすべてのジョブに関する情報が一覧表示されます。
ジョブ リストに表示される列を変更するには、 をクリックし、列を選択または選択解除します。
次のスクリーンショットに示すように、ジョブの一覧でジョブをフィルター処理できます。
- キーワードの検索。 キーワード検索は、名前、ジョブ ID、およびジョブ タグ フィールドでサポートされています。 キーと値で作成されたタグを検索するには、キー、値、またはキーと値の両方で検索できます。 たとえば、キー
department
と値finance
を持つタグの場合、department
またはfinance
を検索して一致するジョブを見つけることができます。 キーと値で検索するには、キーと値をコロンで区切って入力します (例:department:finance
)。 - 所有しているジョブのみを選択する。
- アクセス許可を持つすべてのジョブを選択します。
- お気に入りとしてマークしたすべてのジョブを選択します。
- タグの使用。 タグで検索するには、[タグ] ドロップダウン メニューを使用して、最大 5 つのタグを同時にフィルター処理するか、キーワード検索を直接使用します。
ジョブの一覧は、列ヘッダーをクリックすることで 名前、ジョブ ID、または 作成者 列を基準に、降順または昇順に並べ替えることもできます。 既定では、ジョブは 名前 の昇順で並べ替えられます。
ジョブを開始するには、[再生] ボタンをクリックします。 ジョブを停止するには、[停止] ボタンをクリックします。 他のジョブ アクションにアクセスするには、Kebab メニュー をクリックします (例えば、ジョブを削除する場合など)。
ビューは 1 つのジョブに対して実行されます
Apache Flow や Azure Data Factory などの外部オーケストレーション ツールによって開始された実行など、アクセスできるジョブの現在実行中の実行と最近完了した実行の一覧を表示できます。 最近のジョブの実行の一覧を表示するには、次の操作を行います。
- サイドバーの
[ワークフロー] をクリックします。
- [名前] 列で、ジョブ名をクリックします。 アクティブな実行と完了した実行のマトリックス ビューとリスト ビューを含む [実行] タブが表示されます。
マトリックス ビューにジョブの実行履歴 (ジョブの各タスクを含む) が表示されます。
マトリックスの実行時間の合計行には、実行の合計時間と実行の状態が表示されます。 開始時刻、期間、状態などの実行の詳細を表示するには、[実行時間の合計] 行のバーにカーソルを合わせます。
[タスク] 行の各セルは、タスクとそのタスクの対応する状態を表します。 開始時刻、期間、クラスター、状態などの各タスクの詳細を表示するには、そのタスクのセルにカーソルを合わせます。
ジョブの実行およびタスクの実行のバーは、実行の状態を示すために色分けされています。 成功した実行は緑色です。 失敗した実行は赤色、スキップされた実行はピンク色、再試行を待機している実行は黄色です。 保留中、キャンセル済み、またはタイムアウトは灰色です。 個々のジョブの実行とタスクの実行バーの高さは、実行時間を視覚的に示します。
予想完了時間を構成した場合、実行時間が構成した時間を超えると、マトリックス ビューに警告が表示されます。
既定では、実行リスト ビューには次の情報が表示されます。
- 実行の開始時刻。
- 実行識別子。
- 実行が、ジョブ スケジュールまたは API 要求によってトリガーされたか、手動で開始されたか。
- 現在実行中のジョブの経過時間、または完了した実行の合計実行時間。 時間が構成した予想完了時間を超えると、警告が表示されます。
- 実行の状態 (キューに登録、保留中、実行中、スキップ、成功、失敗、タイムアウト、キャンセル中、または 取り消し済み)。
- 実行が終了したエラー コード。
- 実行パラメーター。
現在アクティブな実行では、停止ボタンが表示されます。 アクティブな実行とキューに置かれたすべての実行を停止するには、[実行 キャンセル] を選択するか、ドロップダウン メニューから [キューに置かれたすべての実行 を取り消す] を します。
を使用して、完了した実行のエントリの削除など、コンテキスト固有の追加アクションを実行します。
実行のコンテキスト固有のアクションにアクセスするには、Kebab メニュー をクリックします (たとえば、アクティブな実行を停止したり、完了した実行を削除したりするには)。
実行リスト ビューに表示される列を変更するには、 をクリックして、列を選択または選択解除します。
ジョブ実行の詳細を表示するには、実行リスト ビューの [開始時刻] 列にある実行のリンクをクリックします。 このジョブの最新の正常な実行に関する詳細を表示するには、[最新の正常な実行に移動] をクリックします。
Azure Databricks でジョブの実行履歴が保持されるのは、最大 60 日間です。 ジョブの実行を保持する必要がある場合、Databricks では、有効期限が切れる前に結果をエクスポートすることをお勧めします。 詳細については、「ジョブ実行結果をエクスポートする」を参照してください。
ジョブ実行の詳細を表示する
[ジョブの実行の詳細] ページには、ジョブ出力とログへのリンクが表示されます。これには、ジョブの実行内の各タスクの成功または失敗に関する情報が含まれます。 ジョブの [実行] タブからジョブ実行の詳細にアクセスできます。
[実行] タブからジョブ実行の詳細を表示するには、実行リスト ビューの [開始時刻] 列にある実行のリンクをクリックします。 ジョブの [実行] タブに戻るには、[ジョブ ID] の値をクリックします。
複数のタスクを含むジョブには、さらにグラフ、タイムライン、リスト ビューがあります。
グラフ ビュー
グラフ内のタスク ノードをクリックすると、次のようなタスク実行の詳細が表示されます。
- 実行名、ジョブの起動方法、開始時刻、終了時刻、期間、状態などのタスクの詳細。
- ソース コード。
- タスクを実行したクラスターと、そのクエリ履歴とログにリンクします。
- タスクのメトリック。
タイムライン ビュー
複数のタスクを含むジョブには、完了に時間がかかっているタスクを特定し、依存関係と重複を理解して、これらのジョブをデバッグおよび最適化するためのタイムライン ビューがあります。
リスト ビュー
既定では、リスト ビューには状態、名前、種類、リソース、期間、依存関係が表示されます。 このビューでは、列を追加および削除できます。
タスクを名前で検索し、タスクの状態またはタスクの種類でフィルター処理し、タスクを状態、名前、または期間で並べ替えることができます。
[ジョブ ID] の値をクリックして、ジョブの [実行] タブに戻ります。
ジョブリストビュー
Azure Databricks は、ジョブの実行状態をどのように判定しますか ?
Azure Databricks は、ジョブのリーフ タスクの結果に基づいて、ジョブの実行が成功したかどうかを判定します。 リーフ タスクは、ダウンストリームの依存関係を持たないタスクです。 ジョブの実行で、次の 3 つの結果のいずれかが生じます。
- 成功: すべてのタスクが成功した。
- 成功したが失敗がある: 一部のタスクが失敗したが、すべてのリーフ タスクは成功した。
- 失敗: 1 つ以上のリーフ タスクが失敗した。
- スキップ済み: ジョブの実行がスキップされました (たとえば、ジョブまたはワークスペースの最大同時実行数を超えるとタスクはスキップされることがあります)。
- タイムアウト: ジョブの実行に時間がかかりすぎて完了できず、タイムアウトしました。
- キャンセル済み: ジョブの実行が取り消されました (たとえば、ユーザーが実行中の実行を手動で取り消した場合など)。
ストリーミング タスクのメトリックを表示する
重要
Databricks ジョブのストリーミング監視はパブリックプレビュー段階にあります。
ジョブ実行の詳細を表示すると、ジョブ UI でストリーミング監視メトリックを使用してストリーミング ワークロードのデータを取得できます。 これらのメトリックには、Apache Kafka、Amazon Kinesis、自動ローダー、Google Pub/Sub、Delta テーブルなど、Spark Structured Streaming でサポートされるソースのバックログ秒、バックログ バイト、バックログ レコード、バックログ ファイルが含まれます。 メトリックは、タスクの実行の詳細を表示すると、右側のウィンドウにグラフとして表示されます。 各グラフに表示されるメトリックは、分単位で集計された最大値であり、過去 48 時間まで含めることができます。
各ストリーミング ソースでは、特定のメトリックのみがサポートされます。 ストリーミング ソースでサポートされていないメトリックは、UI で表示できません。 次の表は、サポートされているストリーミング ソースで使用できるメトリックを示しています。
ソース | バックログ バイト数 | バックログ レコード | バックログ秒数 | バックログ ファイル |
---|---|---|---|---|
Kafka | ✓ | ✓ | ||
キネシス | ✓ | ✓ | ||
Delta | ✓ | ✓ | ||
自動ローダー | ✓ | ✓ | ||
Google Pub/Sub (グーグルパブサブ) | ✓ | ✓ |
また、各ストリーミング メトリックのしきい値を指定し、タスクの実行中にストリームがしきい値を超えた場合に通知を構成することもできます。 低速ジョブ の通知を構成するを参照してください。
サポートされている構造化ストリーミング ソースの 1 つからデータをストリーミングするタスク実行のストリーミング メトリックを表示するには:
- [ジョブ実行の詳細] ページで、指標を表示するタスクをクリックします。
- タスク実行 ペインで、[メトリック] タブをクリックします。
- メトリックのグラフを開くには、メトリック名の横
をクリックします。
- 特定のストリームのメトリックを表示するには、stream_idを[フィルターテキスト ボックス]に入力します。 ストリーム ID はジョブ実行の出力にあります。
- メトリック グラフの期間を変更するには、時間ドロップダウン メニューを使用します。
- 実行にストリームが10を超えて含まれている場合にストリームをスクロールするには、[次へ] または [前へ] をクリックします。
ストリーミングの可観測性の制限事項
- 1 回の実行に 4 つ以上のストリームがない限り、メトリックは 1 分ごとに更新されます。 実行に 4 つ以上のストリームがある場合、メトリックは 5 分ごとに更新されます。
- メトリックは、各実行の最初の 50 ストリームに対してのみ収集されます。
タスクの実行履歴を表示する
タスクの実行履歴 (成功した実行と失敗した実行を含む) を表示するには、次の操作を行います。
- [ジョブの実行の詳細] ページでタスクをクリックします。 [タスクの実行の詳細] ページが表示されます。
- [実行履歴] ドロップダウン メニューでタスクの実行を選択します。
For each
タスクのタスク実行履歴を表示する
For each
タスクの実行履歴へのアクセスは、標準の Azure Databricks ジョブ タスクと同じです。 For each
ページまたはマトリックス ビューの対応するセルで、 タスク ノードをクリックできます。 ただし、標準タスクとは異なり、For each
タスクの実行の詳細は、入れ子になったタスクのイテレーションのテーブルとして表示されます。
失敗したイテレーションのみを表示するには、[失敗したイテレーションのみ]をクリックします。
イテレーションの出力を表示するには、イテレーションの開始時刻または終了時刻の値をクリックします。
すべてのジョブでの最近のジョブの実行を表示する
Apache Airflow や Azure Data Factory などの外部オーケストレーション ツールによって開始された実行を含め、アクセスできるワークスペース内のすべてのジョブについて、現在実行中の実行と最近完了した実行の一覧を表示できます。 最近のジョブの実行の一覧を表示するには、次の操作を行います。
- サイドバーの
[ワークフロー] をクリックします。
- 「ジョブの実行」タブをクリックして、「完了した実行数」グラフと「ジョブの実行」一覧を表示します。
完了した実行数グラフ
完了した実行数グラフには、過去 48 時間に完了したジョブの実行数が表示されます。 既定では、失敗したジョブ、スキップされたジョブ、成功したジョブの実行がグラフに表示されます。 グラフをフィルター処理して特定の実行の状態を表示したり、グラフを特定の時間範囲に制限したりすることもできます。 [ジョブの実行] タブには、過去 67 日間のジョブの実行テーブルも含まれています。 既定では、テーブルには失敗したジョブ、スキップされたジョブ、成功したジョブの実行に関する詳細が含まれます。
Note
完了した実行数グラフは、[自分の所有] をクリックしたときにのみ表示されます。
完了した実行数は、次のように実行の状態でフィルター処理できます。
- 現在実行中または実行を待機しているジョブを表示するようにグラフを更新するには、[アクティブな実行] をクリックします。
- 失敗、成功、スキップされた実行など、完了した実行のみを表示するようにグラフを更新するには、[完了した実行] をクリックします。
- 過去 48 時間に正常に完了した実行のみを表示するようにグラフを更新するには、[成功した実行] をクリックします。
- スキップされた実行のみを表示するようにグラフを更新するには、[スキップされた実行] をクリックします。 ワークスペースでの同時実行の最大数を超えたか、ジョブの構成で指定された同時実行の最大数を超えた場合、実行はスキップされます。
- エラー状態で完了した実行のみを表示するようにグラフを更新するには、[失敗した実行] をクリックします。
いずれかのフィルター ボタンをクリックすると、実行テーブルの実行リストも更新され、選択した状態に一致するジョブの実行のみが表示されます。
完了した実行数グラフに表示される時間範囲を制限するには、グラフ内のカーソルをクリックしてドラッグし、時間範囲を選択します。 グラフと実行テーブルが更新され、選択した時間範囲の実行のみが表示されます。
上位 5 件のエラーの種類テーブルには、選択した時間範囲で最も頻繁に発生するエラーの種類のリストが表示され、ワークスペースでのジョブの問題の最も一般的な原因をすばやく確認できます。
実行中のジョブ一覧
[ジョブの実行] タブには、過去 60 日間のジョブ実行のテーブルも含まれています。 既定では、テーブルには失敗したジョブ、スキップされたジョブ、成功したジョブの実行に関する詳細が含まれます。
ジョブ実行リスト
次に基づいて、一覧に表示される実行の一覧をフィルター処理できます。
- ジョブ: 最大 3 つのジョブを選択し、これらのジョブの実行のみを確認します。
- 実行方法: 最大 3 つの実行を ID として選択し、これらのユーザーとして実行された実行のみを表示します。
- 時間枠: この間隔で発生したジョブの実行を絞り込むには、開始日時と終了日時を選択して選択します。
- 実行状態: アクティブ (現在実行中)、完了 (成功した実行と失敗した実行を含む実行が完了)、成功、失敗、スキップされた実行のみを表示するようにフィルター処理します。
- エラー コード: エラー コードに基づいて一覧をフィルター処理し、同じエラー コードで失敗したすべてのジョブを表示します。
既定では、runs テーブル内の実行の一覧には次の情報が表示されます。
- 実行の開始時刻。
- 実行に関連付けられたジョブの名前。
- ジョブの実行に使用されるユーザー名。
- 実行が、ジョブ スケジュールまたは API 要求によってトリガーされたか、手動で開始されたか。
- 現在実行中のジョブの経過時間、または完了した実行の合計実行時間。 時間が構成した予想完了時間を超えると、警告が表示されます。
- 実行の状態: キューに登録された、保留中、実行中、スキップされた、成功した、失敗した、タイムアウト、キャンセル中、キャンセルされた。
- 実行が終了したエラー コード。
- 実行に関する任意のパラメーター。
- 実行中のジョブを停止するには、停止ボタンをクリックします。 ジョブのアクションにアクセスするには、
をクリックします (たとえば、アクティブな実行を停止したり、完了した実行を削除したりします)。
実行リストに表示される列を変更するには、 をクリックし、列を選択または選択解除します。
[ジョブの実行の詳細] を表示するには、実行の [開始時刻] 列のリンクをクリックします。 ジョブの詳細を表示するには、[ジョブ] 列のジョブ名をクリックします。
ジョブの系列情報を表示する
ワークスペースで Unity Catalog が有効になっている場合は、ワークフロー内の任意の Unity Catalog テーブルに関する系列情報を表示できます。 ワークフローで系列情報が使用可能な場合は、ジョブの [ジョブの詳細] パネル、ジョブ実行の [ジョブ実行の詳細] パネル、またはタスク実行の [タスク実行の詳細] パネルに、アップストリーム テーブルとダウンストリーム テーブルの数を含むリンクが表示されます。 このリンクをクリックすると、テーブルの一覧が表示されます。 テーブルをクリックすると、Catalog Explorer に詳細情報が表示されます。
Databricks アセット バンドルを使用して作成されたジョブを表示して実行する
Azure Databricks ジョブ UI を使用して、Databricks アセット バンドルによってデプロイされたジョブを表示および実行できます。 既定では、これらのジョブはジョブ UI では読み取り専用です。 バンドルによってデプロイされたジョブを編集するには、バンドル構成ファイルを変更し、ジョブを再デプロイします。 バンドル構成にのみ変更を適用すると、バンドル ソース ファイルで常に現在のジョブ構成がキャプチャされます。
ただし、ジョブをすぐに変更する必要がある場合は、ジョブをバンドル構成から切断して、UI でジョブ設定の編集を有効にすることができます。 ジョブを切断するには、[Disconnect from source]\(ソースから切断\) をクリックします。 [Disconnect from source]\(ソースから切断\) ダイアログで、[切断] をクリックして確定します。
UI でジョブに加えた変更は、バンドル構成には適用されません。 UI で行った変更をバンドルに適用するには、バンドル構成を手動で更新する必要があります。 ジョブをバンドル構成に再接続するには、バンドルを使用してジョブを再デプロイします。
ジョブ実行結果をエクスポートする
すべてのジョブの種類について、ノートブックの実行結果とジョブ実行ログをエクスポートできます。
ノートブックの実行結果のエクスポート
ジョブの実行を保持するには、その結果をエクスポートします。 ノートブック ジョブの実行では、レンダリングされたノートブックをエクスポートして、後で Azure Databricks ワークスペースにインポートできます。
1 つのタスクを含むジョブに対してノートブックの実行結果をエクスポートするには:
- [ジョブの詳細] ページで、[完了した実行 (過去 60 日)] テーブルの [実行] 列にある実行の [詳細の表示] リンクをクリックします。
- [HTML にエクスポート] をクリックします。
複数のタスクを含むジョブに対してノートブックの実行結果をエクスポートするには:
- [ジョブの詳細] ページで、[完了した実行 (過去 60 日)] テーブルの [実行] 列にある実行の [詳細の表示] リンクをクリックします。
- エクスポートするノートブック タスクをクリックします。
- [HTML にエクスポート] をクリックします。
ジョブ実行ログをエクスポートする
ジョブ実行のログをエクスポートすることもできます。 ジョブのコンピュートを構成する際に、ログを DBFS に自動的に配信するようにジョブを設定できます(コンピューティング構成のリファレンスを参照)、または、ジョブ API を使って設定することもできます。 Jobs API のnew_cluster.cluster_log_conf
操作 () に渡される要求本文の POST /jobs/create
オブジェクトを参照してください。