Databricks ジョブの監視と可観測性

この記事では、Azure Databricks UI で、アクセスできるジョブの表示、ジョブの実行履歴の表示、ジョブの実行の詳細表示に使用できる機能について説明します。 ジョブの通知を設定するには、「 ジョブ イベントのメール通知とシステム通知を追加する」をご覧ください。

Databricks CLI を使用してジョブを表示し、ジョブを実行する方法について学習するには、CLI コマンド databricks jobs list -hdatabricks jobs get -h、および databricks jobs run-now -h を実行します。 Jobs API の使用方法については、「Jobs API」をご覧ください。

system.lakeflow スキーマにアクセスできる場合は、アカウント全体からジョブの実行とタスクのレコードを表示およびクエリすることもできます。 「ジョブ システム テーブル リファレンス」を参照してください。

ジョブの表示

アクセスできるジョブのリストを表示するには、サイドバーの [ワークフロー] アイコン [ワークフロー] をクリックします。 ワークフロー UI の [ジョブ] タブには、ジョブの作成者、ジョブのトリガー (存在する場合)、最後の実行結果など、使用可能なすべてのジョブに関する情報が一覧表示されます。

ジョブ リストに表示される列を変更するには、設定アイコン をクリックし、列を選択または選択解除します。

ジョブ リスト内のジョブは次の方法でフィルター処理できます。

  • キーワードを使用する。 このワークスペースでジョブ数の制限の増加機能が有効になっている場合、キーワードによる検索では、名前、ジョブ ID、およびジョブ タグ フィールドのみがサポートされます。
  • 所有しているジョブのみを選択する。
  • アクセス許可を持つすべてのジョブを選択する。
  • タグの使用。 キーのみで作成されたタグを検索するには、検索ボックスにそのキーを入力します。 キーと値で作成されたタグを検索するには、キー、値、またはキーと値の両方で検索できます。 たとえば、キー department と値 finance を持つタグの場合、department または finance を検索して一致するジョブを見つけることができます。 キーと値で検索するには、キーと値をコロンで区切って入力します (例: department:finance)。

また、任意の列ヘッダーをクリックして、ジョブのリストをその列で並べ替えることもできます (降順または昇順)。 ジョブ数の制限の増加機能が有効になっている場合は、NameJob ID、または Created by でしか並べ替えできません。 既定の並べ替えは、Name の昇順です。

ケバブ メニュー をクリックして、ジョブのアクション (例: ジョブの削除) にアクセスします。

ジョブの実行を表示する

Apache Airflow や Azure Data Factory などの外部オーケストレーション ツールによって開始された実行を含め、アクセスできるすべてのジョブについて、現在実行中の実行と最近完了した実行の一覧を表示できます。 最近のジョブの実行の一覧を表示するには、次の操作を行います。

  1. サイドバーの [ワークフロー] アイコン [ワークフロー] をクリックします。
  2. [名前] 列で、ジョブ名をクリックします。 アクティブな実行と完了した実行のマトリックス ビューとリスト ビューを含む [実行] タブが表示されます。

マトリックス ビューにジョブの実行履歴 (ジョブの各タスクを含む) が表示されます。

マトリックスの実行時間の合計行には、実行の合計時間と実行の状態が表示されます。 開始時刻、期間、状態などの実行の詳細を表示するには、[実行時間の合計] 行のバーにカーソルを合わせます。

[タスク] 行の各セルは、タスクとそのタスクの対応する状態を表します。 開始時刻、期間、クラスター、状態などの各タスクの詳細を表示するには、そのタスクのセルにカーソルを合わせます。

ジョブの実行およびタスクの実行のバーは、実行の状態を示すために色分けされています。 成功した実行は緑、失敗した実行は赤、スキップされた実行はピンクです。 個々のジョブの実行とタスクの実行バーの高さは、実行時間を視覚的に示します。

予想完了時間を構成した場合、実行時間が構成した時間を超えると、マトリックス ビューに警告が表示されます。

既定では、実行リスト ビューに次の情報が表示されます。

  • 実行の開始時刻。
  • 実行識別子。
  • 実行が、ジョブ スケジュールまたは API 要求によってトリガーされたか、手動で開始されたか。
  • 現在実行中のジョブの経過時間、または完了した実行の合計実行時間。 時間が構成した予想完了時間を超えると、警告が表示されます。
  • Spark ログへのリンク。
  • ジョブの状態 (QueuedPendingRunningSkippedSucceededFailedTerminatingTerminatedInternal ErrorTimed OutCanceledCancelingWaiting for Retry)。
  • ケバブ メニュー をクリックして、ジョブに対するコンテキスト固有アクション (例: アクティブな実行の停止または完了した実行の削除) にアクセスします。

実行リスト ビューに表示される列を変更するには、設定アイコン をクリックして、列を選択または選択解除します。

ジョブ実行の詳細を表示するには、実行リスト ビューの [開始時刻] 列にある実行のリンクをクリックします。 このジョブの最新の正常な実行に関する詳細を表示するには、[最新の正常な実行に移動] をクリックします。

Azure Databricks でジョブの実行履歴が保持されるのは、最大 60 日間です。 ジョブの実行を保持する必要がある場合、Databricks では、有効期限が切れる前に結果をエクスポートすることをお勧めします。 詳細については、「ジョブ実行結果をエクスポートする」を参照してください。

ジョブ実行の詳細を表示する

[ジョブの実行の詳細] ページには、ジョブ出力とログへのリンクが表示されます。これには、ジョブの実行内の各タスクの成功または失敗に関する情報が含まれます。 ジョブの [実行] タブからジョブ実行の詳細にアクセスできます。 [実行] タブからジョブ実行の詳細を表示するには、実行リスト ビューの [開始時刻] 列にある実行のリンクをクリックします。 ジョブの [実行] タブに戻るには、[ジョブ ID] の値をクリックします。

ジョブに複数のタスクが含まれている場合は、1 つのタスクをクリックすると、次のようなタスク実行の詳細が表示されます。

  • タスクを実行したクラスター
    • タスクの Spark UI
    • タスクのログ
    • タスクのメトリック

[ジョブ ID] の値をクリックして、ジョブの [実行] タブに戻ります。

Azure Databricks は、ジョブの実行状態をどのように判定しますか ?

Azure Databricks は、ジョブのリーフ タスクの結果に基づいて、ジョブの実行が成功したかどうかを判定します。 リーフ タスクは、ダウンストリームの依存関係を持たないタスクです。 ジョブの実行で、次の 3 つの結果のいずれかが生じます。

  • 成功: すべてのタスクが成功した。
  • 成功したが失敗がある: 一部のタスクが失敗したが、すべてのリーフ タスクは成功した。
  • 失敗: 1 つ以上のリーフ タスクが失敗した。

タスクの実行履歴を表示する

タスクの実行履歴 (成功した実行と失敗した実行を含む) を表示するには、次の操作を行います。

  1. [ジョブの実行の詳細] ページでタスクをクリックします。 [タスクの実行の詳細] ページが表示されます。
  2. [実行履歴] ドロップダウン メニューでタスクの実行を選択します。

For each タスクのタスク実行履歴を表示する

For each タスクの実行履歴へのアクセスは、標準の Azure Databricks ジョブ タスクと同じです。 ジョブの実行の詳細 ページまたはマトリックス ビューの対応するセルで、For each タスク ノードをクリックできます。 ただし、標準タスクとは異なり、For each タスクの実行の詳細は、入れ子になったタスクのイテレーションのテーブルとして表示されます。

失敗したイテレーションのみを表示するには、[失敗したイテレーションのみ]をクリックします。

イテレーションの出力を表示するには、イテレーションの開始時刻または終了時刻の値をクリックします。

最近のジョブの実行を表示する

Apache Airflow や Azure Data Factory などの外部オーケストレーション ツールによって開始された実行を含め、アクセスできるワークスペース内のすべてのジョブについて、現在実行中の実行と最近完了した実行の一覧を表示できます。 最近のジョブの実行の一覧を表示するには、次の操作を行います。

  1. サイドバーの [ワークフロー] アイコン [ワークフロー] をクリックします。
  2. [ジョブの実行] タブをクリックすると、ジョブの実行リストが表示されます。

完了した実行数グラフには、過去 48 時間に完了したジョブの実行数が表示されます。 既定では、失敗したジョブ、スキップされたジョブ、成功したジョブの実行がグラフに表示されます。 グラフをフィルター処理して特定の実行の状態を表示したり、グラフを特定の時間範囲に制限したりすることもできます。 [ジョブの実行] タブには、過去 67 日間のジョブの実行テーブルも含まれています。 既定では、テーブルには失敗したジョブ、スキップされたジョブ、成功したジョブの実行に関する詳細が含まれます。

Note

完了した実行数グラフは、[自分の所有] をクリックしたときにのみ表示されます。

完了した実行数は、次のように実行の状態でフィルター処理できます。

  • 現在実行中または実行を待機しているジョブを表示するようにグラフを更新するには、[アクティブな実行] をクリックします。
  • 失敗、成功、スキップされた実行など、完了した実行のみを表示するようにグラフを更新するには、[完了した実行] をクリックします。
  • 過去 48 時間に正常に完了した実行のみを表示するようにグラフを更新するには、[成功した実行] をクリックします。
  • スキップされた実行のみを表示するようにグラフを更新するには、[スキップされた実行] をクリックします。 ワークスペースでの同時実行の最大数を超えたか、ジョブの構成で指定された同時実行の最大数を超えた場合、実行はスキップされます。
  • エラー状態で完了した実行のみを表示するようにグラフを更新するには、[失敗した実行] をクリックします。

いずれかのフィルター ボタンをクリックすると、実行テーブルの実行リストも更新され、選択した状態に一致するジョブの実行のみが表示されます。

完了した実行数グラフに表示される時間範囲を制限するには、グラフ内のカーソルをクリックしてドラッグし、時間範囲を選択します。 グラフと実行テーブルが更新され、選択した時間範囲の実行のみが表示されます。

既定では、実行テーブルの実行リストには次が表示されます。

  • 実行の開始時刻。
  • 実行に関連付けられたジョブの名前。
  • ジョブの実行に使用されるユーザー名。
  • 実行が、ジョブ スケジュールまたは API 要求によってトリガーされたか、手動で開始されたか。
  • 現在実行中のジョブの経過時間、または完了した実行の合計実行時間。 時間が構成した予想完了時間を超えると、警告が表示されます。
  • ジョブの状態 (QueuedPendingRunningSkippedSucceededFailedTerminatingTerminatedInternal ErrorTimed OutCanceledCancelingWaiting for Retry)。
  • 実行に関する任意のパラメーター。
  • ケバブ メニュー をクリックして、ジョブに対するコンテキスト固有アクション (例: アクティブな実行の停止または完了した実行の削除) にアクセスします。

実行リストに表示される列を変更するには、設定アイコン をクリックし、列を選択または選択解除します。

上位 5 件のエラーの種類テーブルには、選択した時間範囲で最も頻繁に発生するエラーの種類のリストが表示され、ワークスペースでのジョブの問題の最も一般的な原因をすばやく確認できます。

[ジョブの実行の詳細] を表示するには、実行の [開始時刻] 列のリンクをクリックします。 ジョブの詳細を表示するには、[ジョブ] 列のジョブ名をクリックします。

ジョブの系列情報を表示する

ワークスペースで Unity Catalog が有効になっている場合は、ワークフロー内の任意の Unity Catalog テーブルに関する系列情報を表示できます。 ワークフローで系列情報が使用可能な場合は、ジョブの [ジョブの詳細] パネル、ジョブ実行の [ジョブ実行の詳細] パネル、またはタスク実行の [タスク実行の詳細] パネルに、アップストリーム テーブルとダウンストリーム テーブルの数を含むリンクが表示されます。 このリンクをクリックすると、テーブルの一覧が表示されます。 テーブルをクリックすると、Catalog Explorer に詳細情報が表示されます。

Databricks アセット バンドルを使用して作成されたジョブを表示して実行する

Azure Databricks ジョブ UI を使用して、Databricks アセット バンドルによってデプロイされたジョブを表示および実行できます。 既定では、これらのジョブはジョブ UI では読み取り専用です。 バンドルによってデプロイされたジョブを編集するには、バンドル構成ファイルを変更し、ジョブを再デプロイします。 バンドル構成にのみ変更を適用すると、バンドル ソース ファイルで常に現在のジョブ構成がキャプチャされます。

ただし、ジョブをすぐに変更する必要がある場合は、ジョブをバンドル構成から切断して、UI でジョブ設定の編集を有効にすることができます。 ジョブを切断するには、[Disconnect from source]\(ソースから切断\) をクリックします。 [Disconnect from source]\(ソースから切断\) ダイアログで、[切断] をクリックして確定します。

UI でジョブに加えた変更は、バンドル構成には適用されません。 UI で行った変更をバンドルに適用するには、バンドル構成を手動で更新する必要があります。 ジョブをバンドル構成に再接続するには、バンドルを使用してジョブを再デプロイします。

ジョブ実行結果をエクスポートする

すべてのジョブの種類について、ノートブックの実行結果とジョブ実行ログをエクスポートできます。

ノートブックの実行結果のエクスポート

ジョブの実行を保持するには、その結果をエクスポートします。 ノートブック ジョブの実行では、レンダリングされたノートブックをエクスポートして、後で Azure Databricks ワークスペースにインポートできます。

1 つのタスクを含むジョブに対してノートブックの実行結果をエクスポートするには:

  1. [ジョブの詳細] ページで、[完了した実行 (過去 60 日)] テーブルの [実行] 列にある実行の [詳細の表示] リンクをクリックします。
  2. [HTML にエクスポート] をクリックします。

複数のタスクを含むジョブに対してノートブックの実行結果をエクスポートするには:

  1. [ジョブの詳細] ページで、[完了した実行 (過去 60 日)] テーブルの [実行] 列にある実行の [詳細の表示] リンクをクリックします。
  2. エクスポートするノートブック タスクをクリックします。
  3. [HTML にエクスポート] をクリックします。

ジョブ実行ログをエクスポートする

ジョブ実行のログをエクスポートすることもできます。 Job API を使用して DBFS にログを自動的に配信するようにジョブを設定できます。 Jobs API の新しいジョブの作成操作 (POST /jobs/create) に渡される要求本文の new_cluster.cluster_log_conf オブジェクトを参照してください。