Azure Databricks ジョブを作成して実行する

この記事では、ジョブ UI を使って Azure Databricks ジョブを作成し、実行する方法について詳しく説明します。

ジョブの構成オプションと既存のジョブを編集する方法については、「Azure Databricks ジョブの設定を構成する」を参照してください。

ジョブの実行を管理および監視する方法については、「ジョブの実行を表示および管理する」を参照してください。

Azure Databricks ジョブを使用して最初のワークフローを作成するには、クイックスタートを参照してください。

重要

  • 1 つのワークスペースでのタスクの同時実行は、1000 に制限されています。 すぐに開始できない実行を要求した場合は、429 Too Many Requests 応答が返されます。
  • 1 時間に 1 つのワークスペースで作成できるジョブの数は、10000 に制限されます ("実行の送信" を含む)。 この制限は、REST API およびノートブック ワークフローによって作成されるジョブにも影響します。

CLI、API、またはノートブックを使ってジョブを作成および実行する

  • Databricks CLI を使ってジョブを作成および実行する方法については、「Databricks CLI とは」を参照してください。
  • ジョブ API を使ってジョブを作成および実行する方法については、REST API リファレンスの「Jobs」(ジョブ) を参照してください。
  • Databricks ノートブックでジョブを直接実行し、スケジュールする方法については、「スケジュールされたノートブック ジョブの作成と管理」を参照してください。

ジョブを作成する

  1. 以下のいずれかを実行します。

    • サイドバーの [ジョブ] アイコン[ワークフロー] をクリックし、[ジョブの作成] ボタン をクリックします。
    • サイドバーで 新規アイコン[新規] をクリックし、[ジョブ] を選択します。

    [タスク] タブが表示され、タスクの作成ダイアログと、ジョブ レベルの設定を含む [ジョブの詳細] サイド パネルが示されます。

    ジョブの作成画面

  2. [新しいジョブ...] を自分のジョブ名に置き換えます。

  3. [タスク名] フィールドに、タスクの名前を入力します。

  4. [種類] ドロップダウン メニューで、実行するタスクの種類を選びます。 「タスクの種類オプション」を参照してください。

  5. タスクを実行するクラスターを構成します。 ワークスペースが Unity カタログ対応ワークスペースにあり、ワークフローのサーバーレス コンピューティングでサポートされているタスクを選択している場合、既定では、サーバーレス コンピューティングが選択されます。 「ワークフローでサーバーレス コンピューティングを使用して Azure Databricks ジョブを実行する」を参照してください。 サーバーレス コンピューティングを使用できない場合、または別のコンピューティングの種類を使用する場合は、[コンピューティング] ドロップダウン メニューで新しいジョブ クラスターまたは既存の汎用クラスターを選択できます。

    • [新しいジョブ クラスター]: [クラスター] ドロップダウン メニューの [編集] をクリックして、クラスターの構成を完了します。
    • [Existing All-Purpose Cluster] (既存の汎用クラスター): [クラスター] ドロップダウン メニューで既存のクラスターを選びます。 新しいページでクラスターを開くには、クラスター名と説明の右側にある 外部リンク アイコンをクリックします。

    タスクを実行するためのクラスターの選択と構成の詳細については、「ジョブで Azure Databricks コンピューティングを使用する」を参照してください。

  6. 依存ライブラリを追加するには、[依存ライブラリ] の横にある [+ 追加] をクリックします。 「依存ライブラリを構成する」を参照してください。

  7. タスクのパラメーターを渡すことができます。 パラメーターの形式と渡し方の要件については、「Azure Databricks ジョブ タスクにパラメーターを渡す」を参照してください。

  8. 必要に応じて、タスクの開始、成功、または失敗に関する通知を受信するには、[電子メール] の横にある [+ 追加] をクリックします。 失敗の通知は、最初のタスクの失敗とその後の再試行時に送信されます。 通知をフィルター処理して送信メール数を減らすには、[Mute notifications for skipped runs] (スキップされた実行の通知をミュートする)[Mute notifications for canceled runs] (取り消された実行の通知をミュートする)[Mute notifications until the last retry] (最後の再試行まで通知をミュートする) をオンにします。

  9. 必要に応じて、タスクの再試行ポリシーを構成するには、[再試行] の横にある [+ 追加] をクリックします。 「タスクの再試行ポリシーを構成する」を参照してください。

  10. 必要に応じてタスクの予想期間またはタイムアウトを構成するには、[Duration threshold] (期間のしきい値) の横にある [+ 追加] をクリックします。 「タスクの予想される完了時間またはタイムアウトを構成する」を参照してください。

  11. Create をクリックしてください。

最初のタスクを作成したら、ジョブ レベルの設定 (通知、ジョブ トリガー、アクセス許可など) を構成できます。 「タスクを編集する」を参照してください。

別のタスクを追加するには、DAG ビューで [タスクの追加] ボタンをクリックします。 サーバーレス コンピューティングを選択した場合、または以前のタスク用に新しいジョブ クラスターを構成した場合は、共有クラスター オプションが提供されます。 タスクを作成または編集するときに、タスクごとにクラスターを構成することもできます。 タスクを実行するためのクラスターの選択と構成の詳細については、「ジョブで Azure Databricks コンピューティングを使用する」を参照してください。

必要に応じて、通知、ジョブ トリガー、アクセス許可などのジョブ レベルの設定を構成できます。 「タスクを編集する」を参照してください。 また、ジョブのタスクと共有されるジョブ レベルのパラメータを構成することもできます。 「すべてのジョブ タスクのパラメータの追加」を参照してください。

タスクの種類オプション

Azure Databricks ジョブに追加できるタスクの種類と、さまざまなタスクの種類に使用できるオプションは次のとおりです。

  • ノートブック: [ソース] ドロップダウン メニューで、Azure Databricks ワークスペース フォルダーにあるノートブックを使うには [ワークスペース] を選びます。また、リモートの Git リポジトリにあるノートブックには [Git プロバイダー] を選びます。

    ワークスペース: ファイル ブラウザーを使ってノートブックを検索し、ノートブック名をクリックして、[確認] をクリックします。

    Git プロバイダー: [編集] または [Add a git reference] (git 参照を追加) をクリックして、Git リポジトリ情報を入力します。 「リモート Git リポジトリからノートブックを使用する」を参照してください。

    注意

    ノートブック セルの合計出力 (すべてのノートブック セルの合計出力) には、20 MB のサイズ制限が適用されます。 さらに、個々のセル出力には、8 MB のサイズ制限が適用されます。 セルの合計出力サイズが 20 MB を超える場合、または個々のセルの出力が 8 MB を超える場合、実行は取り消され、失敗としてマークされます。

    制限に近づいている、または制限を超えるセルを見つけるのに支援が必要な場合は、汎用クラスターに対してノートブックを実行し、このノートブックの自動保存の手法を使用します。

  • JAR: Main クラスを指定します。 main メソッドを含むクラスの完全修飾名を使用します (例: org.apache.spark.examples.SparkPi)。 次に、[依存ライブラリ] の下の [追加] をクリックして、タスクの実行に必要なライブラリを追加します。 これらのライブラリの 1 つに、main クラスが含まれている必要があります。

    JAR タスクの詳細については、「Azure Databricks ジョブで JAR を使用する」を参照してください。

  • Spark Submit: [パラメーター] テキスト ボックスで、main クラス、ライブラリ JAR へのパス、文字列の JSON 配列として書式設定されたすべての引数を指定します。 次の例では、Apache Spark の例から DFSReadWriteTest を実行するように spark-submit タスクを構成します。

    ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/discover/databricks-datasets/README.md","/FileStore/examples/output/"]
    

    重要

    spark-submit タスクにはいくつかの制限があります。

    • spark-submit タスクは、新しいクラスターでのみ実行できます。
    • spark-submit では、クラスターの自動スケールはサポートされていません。 自動スケールの詳細については、クラスターの自動スケールに関するセクションを参照してください。
    • spark-submit では、Databricks ユーティリティ (dbutils) 参照はサポートされていません。 Databricks ユーティリティを使用するには、代わりに JAR タスクを使用します。
    • Unity Catalog 対応クラスターを使っている場合、spark-submit は、クラスターで割り当てられたアクセス モードが使われている場合にのみサポートされます。 共有アクセス モードはサポートされていません。
    • Spark Streaming ジョブでは、同時実行の最大数を 1 より大きく設定しないでください。 Streaming ジョブは、cron 式 "* * * * * ?" を使用して (毎分) 実行するように設定する必要があります。 ストリーミング タスクは継続的に実行されるので、常にジョブの最後のタスクである必要があります。
  • Python スクリプト: [ソース] ドロップダウン メニューで Python スクリプトの場所を選びます。ローカル ワークスペースにあるスクリプトの場合は [ワークスペース]、DBFS にあるスクリプトの場合は [DBFS]、Git リポジトリにあるスクリプトの場合は [Git プロバイダー] です。 [パス] テキストボックスに、Python スクリプトへのパスを入力します。

    ワークスペース: [Python ファイルの選択] ダイアログで Python スクリプトを参照し、[確認] をクリックします。

    DBFS: DBFS またはクラウド ストレージ上の Python スクリプトの URI を入力します (例: dbfs:/FileStore/myscript.py)。

    Git プロバイダー: [編集] をクリックして、Git リポジトリの情報を入力します。 「リモート Git リポジトリから Python コードを使用する」を参照してください。

  • Delta Live Tables パイプライン: [パイプライン] ドロップダウン メニューで、既存の Delta Live Tables パイプラインを選びます。

    重要

    パイプライン タスクでは、トリガーされたパイプラインのみを使用できます。 継続的パイプラインは、ジョブ タスクとしてサポートされていません。 トリガーされたパイプラインと継続的パイプラインの詳細については、継続的パイプラインとトリガーされたパイプラインの実行に関するページを参照してください。

  • Python Wheel: [パッケージ名] テキスト ボックスに、インポートするパッケージを入力します (例: myWheel-1.0-py2.py3-none-any.whl)。 [エントリ ポイント] テキスト ボックスに、Python ホイール ファイルの開始時に呼び出す関数を入力してください。 [依存ライブラリ] の下の [追加] をクリックして、タスクの実行に必要なライブラリを追加します。

  • SQL: [SQL タスク] ドロップダウン メニューで、[クエリ][Legacy dashboard]\(レガシ ダッシュボード\)[アラート]、または [ファイル] を選びます。

    Note

    クエリ: [SQL クエリ] ドロップダウン メニューで、タスクの実行時に実行するクエリを選びます。

    レガシ ダッシュボード: [SQL ダッシュボード] ドロップダウン メニューで、タスクの実行時に更新するダッシュボードを選びます。

    アラート: [SQL アラート] ドロップダウン メニューで、評価のためにトリガーするアラートを選びます。

    [ファイル]: Azure Databricks ワークスペース フォルダーにある SQL ファイルを使うには、[ソース] ドロップダウン メニューで [ワークスペース] を選び、ファイル ブラウザーを使って SQL ファイルを見つけ、ファイル名をクリックして、[確認] をクリックします。 リモート Git リポジトリにある SQL ファイルを使うには、[Git プロバイダー] を選び、[編集] または [Add a git reference] (Git 参照の追加) をクリックして、Git リポジトリの詳細を入力します。 「リモート Git リポジトリから SQL クエリを使用する」を参照してください。

    [SQL Warehouse] ドロップダウン メニューで、タスクを実行するサーバーレスまたはプロの SQL ウェアハウスを選びます。

  • dbt: dbt タスクの詳細な構成例については、「Azure Databricks ジョブで dbt 変換を使用する」を参照してください。

  • ジョブの実行: [ジョブ] ドロップダウン メニューで、タスクによって実行されるジョブを選びます。 実行するジョブを検索するには、[ジョブ] メニューでジョブ名を入力します。

    重要

    Run Job タスク、または 3 つを超える Run Job タスクが入れ子になったジョブを使う場合は、循環依存関係のあるジョブを作成しないでください。 循環依存関係とは、直接または間接的に相互にトリガーする Run Job タスクのことです。 たとえば、ジョブ A がジョブ B をトリガーし、ジョブ B がジョブ A をトリガーする場合です。循環依存関係のある、または 3 つを超える Run Job タスクが入れ子になったジョブを Databricks はサポートしていません。また、今後のリリースでこのようなジョブの実行は許可されない可能性があります。

  • If/else: If/else condition タスクの使い方については、「if/else 条件タスク を使用して分岐ロジックをジョブに追加する」をご覧ください。

Azure Databricks ジョブ タスクにパラメーターを渡す

さまざまなジョブ タスクにパラメーターを渡すことができます。 タスクの種類ごとに、パラメーターの書式設定と渡すための要件は異なります。

タスク名などの現在のタスクに関する情報にアクセスしたり、ジョブの開始時刻や現在のジョブ実行の識別子など、実行に関するコンテキストをジョブ タスク間で渡したりするには、動的値参照を使用します。 使用可能な動的値参照を一覧表示するには、[動的値の参照] をクリックします。

タスクが属するジョブでジョブ パラメータが構成されている場合、タスク パラメータを追加した際は、それらのパラメータが表示されます。 ジョブ パラメータとタスク パラメータがキーを共有している場合は、ジョブ パラメータが優先されます。 ジョブ パラメータと同じキーを持つタスク パラメータを追加しようとすると、UI に警告が表示されます。 キー値パラメータ (JAR あるいは Spark Submit タスクなど) で構成されていないタスクにジョブ パラメータを渡すには、引数を {{job.parameters.[name]}} のように書式設定し、[name] はパラメータを識別する key に置き換えます。

  • ノートブック: [追加] をクリックし、タスクに渡す各パラメーターのキーと値を指定します。 [異なるパラメーターでジョブを実行する] オプションを使用して、タスクを手動で実行するときに、パラメーターをオーバーライドまたは追加できます。 パラメーターは、パラメーターのキーで指定されたノートブック ウィジェットの値を設定します。

  • JAR: JSON 形式の文字列配列を使用してパラメーターを指定します。 これらの文字列は、main クラスの main メソッドに引数として渡されます。 「JAR ジョブ パラメーターを構成する」を参照してください。

  • Spark Submit: パラメーターは、JSON 形式の文字列配列として指定されます。 Apache Spark spark-submit 規則に準拠すると、JAR パスの後のパラメーターが main クラスの main メソッドに渡されます。

  • Python Wheel: [パラメーター] ドロップダウン メニューで、[位置引数] を選択して JSON 形式の文字列配列としてパラメーターを入力するか、[キーワード引数] > [追加] を選択して各パラメーターのキーと値を入力します。 位置引数とキーワード引数の両方が、コマンド ライン引数として Python ホイール タスクに渡されます。 Python ホイール ファイルにパッケージされた Python スクリプトの引数を読み取る例については、「Azure Databricks ジョブで Python ホイール ファイルを使用する」を参照してください。

  • ジョブの実行: ジョブに渡す各ジョブ パラメータのキーと値を入力します。

  • Python スクリプト: JSON 形式の文字列配列を使用してパラメーターを指定します。 これらの文字列は引数として渡され、位置引数として読み取ったり、Python の argparse モジュールを使って解析したりすることができます。 Python スクリプトで位置引数を読み取る例については、「手順 2: GitHub データをフェッチするスクリプトを作成する」を参照してください。

  • SQL: パラメーター化されたクエリまたはパラメーター化されたダッシュボードを実行するタスクの場合は、表示されたをテキスト ボックスにパラメーターの値を入力します。

タスク パスをコピーする

ノートブック タスクなどの特定のタスクの種類では、タスクのソース コードへのパスをコピーできます。

  1. [タスク] タブをクリックします。
  2. コピーするパスを含むタスクを選択します。
  3. タスク パスの横にある [ジョブのコピー] アイコン をクリックして、パスをクリップボードにコピーします。

既存のジョブからジョブを作成する

既存のジョブを複製すると、新しいジョブをすばやく作成できます。 ジョブを複製すると、ジョブ ID を除く、ジョブの同一のコピーが作成されます。 ジョブのページで、ジョブの名前の横にある [詳細] をクリックし、ドロップダウン メニューから [複製] を選択します。

既存のタスクからタスクを作成する

既存のタスクを複製すると、新しいタスクをすばやく作成できます。

  1. ジョブのページで、[タスク] タブをクリックします。
  2. 複製するタスクを選択します。
  3. ジョブの縦方向の省略記号 をクリックし、[タスクの複製] を選択します。

ジョブを削除する

ジョブを削除するには、ジョブのページで、ジョブの名前の横にある [詳細] をクリックし、ドロップダウン メニューから [削除] を選択します。

タスクを削除する

タスクを削除するには、次の操作を行います。

  1. [タスク] タブをクリックします。
  2. 削除するタスクを選択します。
  3. ジョブの縦方向の省略記号 をクリックし、[タスクの削除] を選択します。

ジョブを実行する

  1. サイドバーの [ジョブ] アイコン[ワークフロー] の順にクリックします。
  2. ジョブを選択し、[実行] タブをクリックします。ジョブはすぐに実行することも、後で実行するようにジョブをスケジュールすることもできます。

複数のタスクを含むジョブ内の 1 つ以上のタスクが成功しない場合、失敗したタスクのサブセットを再実行できます。 「失敗したタスクとスキップされたタスクを再実行する」を参照してください。

ジョブをすぐに実行する

今すぐジョブを実行するには、[今すぐ実行] ボタン をクリックします。

ヒント

[今すぐ実行] をクリックすると、ノートブック タスクを使用してジョブのテスト実行を行えます。 ノートブックに変更を加える必要がある場合は、ノートブックを編集した後でもう一度 [今すぐ実行] をクリックすると、新しいバージョンのノートブックが自動的に実行されます。

異なるパラメーターでジョブを実行する

[異なるパラメーターで今すぐ実行] を使用して、異なるパラメーターまたは既存のパラメーターに異なる値を指定してジョブを再実行できます。

Note

ジョブ パラメータの導入前に実行されたジョブが、同じキーを持つタスク パラメータをオーバーライドしている場合には、ジョブ パラメータをオーバーライドすることはできません。

  1. [今すぐ実行] の横にある 青い下向きキャレット をクリックし、[異なるパラメーターで今すぐ実行] を選択するか、[アクティブな実行] テーブルで [異なるパラメーターで今すぐ実行] をクリックします。 タスクの種類に応じて、新しいパラメーターを入力します。 「Azure Databricks ジョブ タスクにパラメーターを渡す」を参照してください。
  2. [実行] をクリックします。

サービス プリンシパルとしてジョブを実行する

Note

ジョブが SQL タスクを使って SQL クエリを実行する場合、ジョブがサービス プリンシパルとして実行される場合でも、クエリの実行に使われる ID は各クエリの共有設定によって決まります。 クエリが Run as owner に構成されている場合、クエリは常にサービス プリンシパルの ID ではなく、所有者の ID を使って実行されます。 クエリが Run as viewer に構成されている場合、クエリはサービス プリンシパルの ID を使って実行されます。 クエリ共有設定の詳細については、「クエリのアクセス許可を構成する」を参照してください。

既定では、ジョブはジョブ所有者の ID として実行されます。 つまり、ジョブはジョブ所有者のアクセス許可を前提としています。 ジョブは、ジョブ所有者がアクセス許可を持っているデータと Azure Databricks オブジェクトにのみアクセスできます。 ジョブの実行 ID をサービス プリンシパルに変更できます。 その後、ジョブは、所有者ではなくそのサービス プリンシパルのアクセス許可を前提とするようになります。

[実行] 設定を変更するには、ジョブに対して管理可能または所有者アクセス許可を持っている必要があります。 自分自身、または自分がサービス プリンシパル ユーザー ロールを持つワークスペース内の任意のサービス プリンシパルを [別のユーザーとして実行] 設定の設定対象にすることができます。 詳細については、サービス プリンシパルの管理に関するページをご覧ください。

Note

ワークスペースの RestrictWorkspaceAdmins 設定が ALLOW ALL に設定されている場合、ワークスペース管理者は [別のユーザーとして実行] 設定の対象をワークスペース内の任意のユーザーに変更することもできます。 ワークスペース管理者が [別のユーザーとして実行] 設定の変更対象に指定できるのを管理者自身または管理者が サービス プリンシパル ユーザー ロールを持つサービス プリンシパルだけに制限するには、「ワークスペース管理者の制限」を参照してください。

実行フィールドを変更するには、次の操作を行います。

  1. サイドバーにある [ジョブ] アイコン[ワークフロー] をクリックします。
  2. [名前] 列で、ジョブ名をクリックします。
  3. [ジョブの詳細] サイド パネルで、[実行] フィールドの横にある鉛筆アイコンをクリックします。
  4. サービス プリンシパルを検索して、選択します。
  5. [保存] をクリックします。

ワークスペース サービス プリンシパル API を使って、自分がユーザー ロールを持っているサービス プリンシパルを一覧表示することもできます。 詳細については、「使用できるサービス プリンシパルを一覧表示する」を参照してください。

スケジュールに従ってジョブを実行する

スケジュールを使うと、指定した時間と期間に Azure Databricks ジョブを自動的に実行できます。 「ジョブのスケジュールを追加する」を参照してください。

継続的ジョブを実行する

ジョブのアクティブな実行が常に存在するように確保できます。 「継続的ジョブを実行する」を参照してください。

新しいファイルが到着したときにジョブを実行する

新しいファイルが Unity Catalog の外部の場所またはボリュームに到着したときにジョブの実行をトリガーするには、ファイル到着トリガーを使用します。

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

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

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

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

同時実行の制限によりジョブを実行できない場合の対処方法

Note

キューは、UI でジョブが作成されるときに既定で有効になります。

同時実行の制限によってジョブの実行がスキップされないように、ジョブのキューイングを有効にできます。 キューが有効で、ジョブの実行にリソースが利用できない場合、実行は最大 48 時間までキューに入れられます。 容量が利用可能になると、ジョブの実行はデキューされ、実行されます。 キューに登録された実行は、ジョブの実行リスト最近のジョブの実行リストに表示されます。

実行は、次の制限のいずれかに達するとキューに入れられます。

  • ワークスペースのアクティブな同時実行の最大数。
  • ワークスペースの Run Job タスクの同時実行の最大数。
  • ジョブの同時実行の最大数。

キューはジョブ レベルのプロパティで、そのジョブの実行のみキューに入れられます。

キューを有効または無効にするには、[詳細設定] をクリックし、[ジョブの詳細] サイド パネルの [キュー] トグル ボタンをクリックします。