Databricks アセット バンドルを使用して Databricks でジョブを開発する

Databricks アセット バンドル(単にバンドルとも呼ばれます) を使用すると、ジョブなどの Databricks リソースをプログラムで検証、デプロイ、実行できます。 バンドルを使用して、Delta Live Tables パイプラインをプログラムで管理し、MLOps スタックを操作することもできます。 「Databricks アセット バンドルとは何ですか?」を参照してください。

この記事では、ジョブをプログラムで管理するバンドルを使用するためにローカル開発セットアップから完了できるステップについて説明します。 「ワークフローのスケジュールとオーケストレーション」を参照してください。

Databricks ジョブ ユーザー インターフェイスまたは API を使用して作成された既存のジョブをバンドルに移動する場合には、それらをバンドル構成ファイルとして再作成する必要があります。 これを行うには、 Databricks 、まず以下の手順を使用してバンドルを作成し、バンドルが機能するかどうかを検証することをお勧めします。 その後、ジョブ定義、ノートブック、その他のソースをバンドルに追加できます。 既存のジョブ定義をバンドルに追加するを参照してください。

Databricks CLI使用してバンドルによってデプロイされたジョブを実行するだけでなく、 Databricks Jobs UI でこれらのジョブを表示して実行することもできます。 「Databricks Asset Bundle を使用して作成されたジョブの表示と実行」を参照してください。

要件

  • Databricks CLI バージョン 0.218.0 以上。 インストールされている Databricks CLI のバージョンを確認するには、コマンドdatabricks -vを実行します。 Databricks CLI をインストールするには、 「Databricks CLI のインストールまたは更新」を参照してください。

決定する事項:テンプレートを使用するか、手動でバンドルを作成します

サンプルバンドルをテンプレートを使用して作成するか、手動で作成するかを決定します。

テンプレートを使用したバンドルの作成

これらのステップでは、Databricks PythonPython用の 必ずバンドル テンプレートを使用してバンドルを作成します。これは、ノートブックまたは コードと、それを実行するジョブの定義との組み合わせで構成されます。次に、Databricks ワークスペース内でデプロイされたジョブを検証、デプロイ、実行します。 リモート ワークスペースではワークスペース ファイルが有効になっている必要があります。 「ワークスペース ファイルとは何ですか?」を参照してください。

ステップ 1: 認証を設定する

このステップでは、開発マシン上のDatabricks CLIとDatabricksワークスペースの間の認証をセットアップします。 この記事では、認証に OAuth ユーザー対マシン (U2M) 認証と、対応するDEFAULTという名前の Databricks 構成プロファイルを使用することを前提としています。

注:

U2M 認証は、これらのステップを試してみるのに適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」のM2M認証の設定手順を参照してください。

  1. Databricks CLIを使用して、各ターゲット ワークスペースに対して次のコマンドを実行し、OAuth トークンの管理をローカルで開始します。

    次のコマンドで、 <workspace-url>を Databricks ワークスペース インスタンスの URL (例: https://1234567890123456.7.gcp.databricks.com ) に置き換えます。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLIは、入力した情報をDatabricks構成プロファイルとして保存するよう促します。Enterを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力してください。同じ名前の既存のプロファイルは、入力した情報で上書きされます。プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、Databricks CLI を使用してコマンドdatabricks auth profilesを実行します。 特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>を実行します。

  3. Web ブラウザーで、画面上の指示に従って Databricks ワークスペースにログインします。

  4. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>

    • databricks auth token -p <profile-name>

    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ--host値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけられるように、 --hostオプションと-pオプションを一緒に指定する必要がある場合があります。

ステップ 2: バンドルを作成する

バンドルには、デプロイする成果物と実行するリソースの設定が含まれています。

  1. ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成されたバンドルが含まれるローカル開発マシン上のディレクトリに切り替えます。

  2. Databricks CLI を使用して、 bundle init コマンドを実行します。

    databricks bundle init
    
  3. Template to useの場合は、 Enterを押してデフォルト値のdefault-pythonのままにします。

  4. Unique name for this projectについては、デフォルト値のmy_projectのままにするか、別の値を入力してEnterを押します。 これにより、このバンドルのルートディレクトリの名前が決まります。 このルートディレクトリは、現在の作業ディレクトリ内に作成されます。

  5. Include a stub (sample) notebookの場合は、[yes] を選択し、Enterキーを押します。

  6. Include a stub (sample) DLT pipelineの場合は、[no] を選択し、Enterキーを押します。これにより、Databricks CLI はバンドル内にサンプルの Delta Live Tables パイプラインを定義しなくなります。

  7. Include a stub (sample) Python packageの場合は、[no] を選択し、Enterキーを押します。これにより、 Databricks CLI 、サンプルのPython wheelパッケージ ファイルや関連するビルド手順をバンドルに追加しないように指示します。

ステップ 3: バンドルを調べる

テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替え、このディレクトリを任意の IDE (Visual Studio Code など) で開きます。 特に関心のあるファイルには、次のものがあります。

  • databricks.yml: このファイルは、バンドルのプログラム名を指定し、ジョブ定義への参照を含み、ターゲット ワークスペースに関する設定を指定します。

  • resources/<project-name>_job.yml: このファイルは、デフォルトのノートブック タスクを含むジョブの設定を指定します。

  • src/notebook.ipynb: このファイルは、実行すると 1 から 10 までの数字を含む RDD を単純に初期化するサンプル ノートブックです。

ジョブをカスタマイズする場合、ジョブ宣言内のマッピングは、 リファレンスの POST /api/2.1/Job/create で定義されているジョブ作成 オペレーションのリクエストRESTAPI ペイロードに対応し、YAML 形式で表現されます。

ヒント

Databricksアセット バンドルのクラスター設定をオーバーライドする」で説明されている手法を使用して、バンドル内の新しいジョブ クラスターの設定を定義、結合、およびオーバーライドできます。

ステップ 4: プロジェクトのバンドル設定ファイルを検証する

このステップでは、バンドル構成が有効かどうかを確認します。

  1. ルート ディレクトリから、Databricks CLI を使用して次のようにbundle validateコマンドを実行します。

    databricks bundle validate
    
  2. バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正してから、このステップを繰り返します。

このステップの後にバンドルに変更を加えた場合は、このステップを繰り返して、バンドル設定がまだ有効かどうかを確認する必要があります。

ステップ 5: ローカル プロジェクトをリモート ワークスペースに配置する

このステップでは、ローカルのノートブックをリモートのDatabricksワークスペースにデプロイし、ワークスペース内にDatabricksジョブを作成します。

  1. バンドル ルートから、Databricks CLI を使用して次のようにbundle deployコマンドを実行します。

    databricks bundle deploy -t dev
    
  2. ローカルのノートブックが展開されているかどうかを確認します。Databricks Databricksスペースのサイドバーで、 [ワークスペース]をクリックします。

  3. src フォルダ> dev > ファイル> <project-name> > users > <your-username> > .bundle をクリックします。ノートブックはこのフォルダ内にあるはずです。

  4. ジョブが作成されたかどうかを確認します。Databricks ワークスペースのサイドバーで、 [ワークフロー]をクリックします。

  5. [ジョブ]タブで、 [dev <your-username> ] <project-name>_jobをクリックします。

  6. [タスク]タブをクリックします。 ノートブックというタスクが 1 つあるはずです。

このステップの後にバンドルに変更を加えた場合は、ステップ 4 ~ 5 を繰り返してバンドル設定がまだ有効かどうかを確認し、プロジェクトを再デプロイする必要があります。

ステップ 6: デプロイしたプロジェクトを実行する

このステップでは、ワークスペースでDatabricksジョブを実行します。

  1. ルート ディレクトリから、 Databricks CLI使用して次のように bundle run コマンドを実行します。<project-name> はステップ 2 のプロジェクトの名前に置き換えます。

    databricks bundle run -t dev <project-name>_job
    
  2. ターミナルに表示されるRun URLの値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。

  3. Databricks ワークスペースで、ジョブ タスクが正常に完了し、緑色のタイトル バーが表示されたら、ジョブ タスクをクリックして結果を確認します。

このステップの後にバンドルに変更を加えた場合は、ステップ 4 ~ 6 を繰り返してバンドル設定がまだ有効かどうかを確認し、プロジェクトを再デプロイし、再デプロイされたプロジェクトを実行する必要があります。

ステップ7: クリーンアップ

このステップでは、デプロイされたノートブックとジョブをワークスペースから削除します。

  1. ルート ディレクトリから、Databricks CLI を使用して次のようにbundle destroyコマンドを実行します。

    databricks bundle destroy
    
  2. ジョブ削除リクエストを確認します。リソースを完全に破棄するように求められたら、 yと入力してEnterを押します。

  3. ノートブックの削除リクエストを確認します。以前に展開したフォルダーとそのすべてのファイルを完全に破棄するように求められたら、 yと入力してEnterを押します。

  4. 開発マシンからもバンドルを削除する場合は、ステップ 2 からローカル ディレクトリを削除できます。

テンプレートを使用してバンドルを作成する手順はこれで終了です。

バンドルを手動で作成する

これらのステップでは、バンドルを最初から作成します。 このシンプルなバンドルは、2 つのノートブックと、これらのノートブックを実行するための Databricks ジョブの定義で構成されています。 次に、Databricks ワークスペース内のジョブからデプロイされたノートブックを検証、デプロイ、実行します。 これらのステップは、 「 Databricksジョブを使用して最初のワークフローを作成する」というタイトルのクイックスタートを自動化します。

ステップ 1: バンドルを作成する

バンドルには、デプロイする成果物と実行するリソースの設定が含まれています。

  1. 開発用マシンに空のディレクトリを作成するか、特定します。

  2. ターミナルで空のディレクトリに切り替えるか、IDEで空のディレクトリを開きます。

ヒント

空のディレクトリは、Git プロバイダーによって管理されるクローン リポジトリに関連付けられている可能性があります。 これにより、外部バージョン管理を使用してバンドルを管理し、プロジェクトで他の開発者や IT プロフェッショナルとより簡単に共同作業できるようになります。 ただし、このデモを簡略化するために、クローンされたリポジトリはここでは使用されません。

このデモの リポジトリを複製することを選択した場合、Databricks では、リポジトリを空にするか、 README.gitignoreなどの基本的なファイルのみを含めることをお勧めします。 そうしないと、リポジトリ内の既存のファイルが Databricks ワークスペースに不必要に同期される可能性があります。

ステップ 2: プロジェクトにノートブックを追加する

このステップでは、プロジェクトに 2 つのノートブックを追加します。 最初のノートブックには、ニューヨーク州保健局の公開データソースから、2007 年以降に流行した赤ちゃんの名前のリストが収録されています。 部門のウェブサイトで赤ちゃん の名前:名前によるトレンド:2007年以降 を参照してください。 最初のノートブックは、このデータを、 mainという名前のカタログ内のdefaultという名前のスキーマにあるmy-volumeという名前の Databricks Unity Catalog ボリュームに保存します。 2 番目のノートブックは保存されたデータを照会し、2014 年の赤ちゃんの名前の集計数を名前と性別別に表示します。

  1. ディレクトリのルートから、最初のノートブック ( retrieve-baby-names.pyという名前のファイル) を作成します。

  2. 次のコードを retrieve-baby-names.py ファイルに追加します。

    # Databricks notebook source
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    
  3. 同じディレクトリに、2 番目のノートブック ( filter-baby-names.pyという名前のファイル) を作成します。

  4. 次のコードを filter-baby-names.py ファイルに追加します。

    # Databricks notebook source
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

ステップ 3: バンドル構成スキーマファイルをプロジェクトに追加する

Visual Studio Code、PyCharm Professional、IntelliJ IDEA Ultimate など、YAML ファイルと JSON スキーマ ファイルのサポートを提供する IDE を使用している場合は、IDE を使用してバンドル構成スキーマ ファイルを作成できるだけでなく、次のようにプロジェクトのバンドル構成ファイルの構文と書式をチェックし、コード補完のヒントを提供することもできます。 ステップ 5 で後ほど作成するバンドル構成ファイルは YAML ベースですが、このステップのバンドル構成スキーマ ファイルはJSONベースであることに注意してください。

  1. たとえば、Visual Studio Code Marketplace からYAML拡張機能をインストールして、Visual Studio Code に YAML 言語サーバー サポートを追加します。

  2. Databricks CLI を使用してbundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトすることで、Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  3. 後のステップ 5 で、バンドル構成ファイルの先頭に次のコメントを追加します。これにより、バンドル構成ファイルが指定されたJSONスキーマ ファイルに関連付けされます。

    # yaml-language-server: $schema=bundle_config_schema.json
    

    注:

    前のコメントで、Databricks Asset Bundle 構成 JSON スキーマ ファイルが別のパスにある場合は、 bundle_config_schema.jsonをスキーマ ファイルへの完全なパスに置き換えます。

  1. Databricks CLI を使用してbundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトすることで、Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  2. PyCharm がバンドル構成 JSON スキーマ ファイルを認識するように構成し、 「カスタム JSON スキーマを構成する」の手順に従って JSON スキーマ マッピングを完了します。

  3. ステップ 5 の後半では、 PyCharmを使用してバンドル構成ファイルを作成または開くことに注意してください。 慣例により、このファイルの名前は databricks.ymlです。

  1. Databricks CLI を使用してbundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトすることで、Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  2. 「カスタム JSON スキーマを構成する」の手順に従って、バンドル構成 JSON スキーマ ファイルを認識するように IntelliJ IDEA を構成し、JSON スキーマ マッピングを完了します。

  3. 後のステップ 5 では、 IntelliJ IDEAを使用してバンドル構成ファイルを作成または開くことに注意してください。 慣例により、このファイルの名前は databricks.ymlです。

ステップ 4: 認証を設定する

このステップでは、開発マシン上のDatabricks CLIとDatabricksワークスペースの間の認証をセットアップします。 この記事では、認証に OAuth ユーザー対マシン (U2M) 認証と、対応するDEFAULTという名前の Databricks 構成プロファイルを使用することを前提としています。

注:

U2M 認証は、これらのステップを試してみるのに適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」のM2M認証の設定手順を参照してください。

  1. Databricks CLIを使用して、各ターゲット ワークスペースに対して次のコマンドを実行し、OAuth トークンの管理をローカルで開始します。

    次のコマンドで、 <workspace-url>を Databricks ワークスペース インスタンスの URL (例: https://1234567890123456.7.gcp.databricks.com ) に置き換えます。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLIは、入力した情報をDatabricks構成プロファイルとして保存するよう促します。Enterを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力してください。同じ名前の既存のプロファイルは、入力した情報で上書きされます。プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、Databricks CLI を使用してコマンドdatabricks auth profilesを実行します。 特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>を実行します。

  3. Web ブラウザーで、画面上の指示に従って Databricks ワークスペースにログインします。

  4. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>

    • databricks auth token -p <profile-name>

    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ--host値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけられるように、 --hostオプションと-pオプションを一緒に指定する必要がある場合があります。

ステップ 5: バンドル構成ファイルをプロジェクトに追加する

このステップでは、2 つのノートブックをデプロイして実行する方法を定義します。 このデモでは、Databricks ジョブを使用して最初のノートブックを実行し、次に 2 番目のノートブックを実行します。 最初のノートブックはデータを保存し、2 番目のノートブックは保存されたデータを照会するため、2 番目のノートブックが起動する前に最初のノートブックの実行が完了する必要があります。 これらの目標は、プロジェクトのバンドル設定ファイル内でモデル化します。

  1. ディレクトリのルートから、バンドル設定ファイル ( databricks.ymlという名前のファイル) を作成します。

  2. 次のコードをdatabricks.ymlファイルに追加し、 <workspace-url>ワークスペースの URL (例: https://1234567890123456.7.gcp.databricks.com ) に置き換えます。 この URL は、 .databrickscfg ファイル内の URL と一致する必要があります。

ヒント

最初の行は # yaml-language-serverで始まるもので、IDE がサポートしている場合にのみ必要です。 詳細については、前のステップ 3 を参照してください。

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job:
      name: retrieve-filter-baby-names-job
      job_clusters:
        - job_cluster_key: common-cluster
          new_cluster:
            spark_version: 12.2.x-scala2.12
            node_type_id: n2-highmem-4
            num_workers: 1
      tasks:
        - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./filter-baby-names.py

targets:
  development:
    workspace:
      host: <workspace-url>

ジョブをカスタマイズする場合、ジョブ宣言内のマッピングは、 リファレンスの POST /api/2.1/Job/create で定義されているジョブ作成 オペレーションのリクエストRESTAPI ペイロードに対応し、YAML 形式で表現されます。

ヒント

Databricksアセット バンドルのクラスター設定をオーバーライドする」で説明されている手法を使用して、バンドル内の新しいジョブ クラスターの設定を定義、結合、およびオーバーライドできます。

ステップ 6: プロジェクトのバンドル設定ファイルを検証する

このステップでは、バンドル構成が有効かどうかを確認します。

  1. 次のように、Databricks CLI を使用してbundle validateコマンドを実行します。

    databricks bundle validate
    
  2. バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正してから、このステップを繰り返します。

このステップの後にバンドルに変更を加えた場合は、このステップを繰り返して、バンドル設定がまだ有効かどうかを確認する必要があります。

ステップ 7: ローカル プロジェクトをリモート ワークスペースに配置する

このステップでは、2 つのローカル ノートブックをリモートDatabricksワークスペースにデプロイし、ワークスペース内にDatabricksジョブを作成します。

  1. Databricks CLI を使用して、次のようにbundle deployコマンドを実行します。

    databricks bundle deploy -t development
    
  2. 2 つのローカル ノートブックが展開されているかどうかを確認します。 Databricksワークスペースのサイドバーで、 [ワークスペース]をクリックします。

  3. 「Users 」> <your-username> > > baby-names > development > files フォルダをクリックします。2 つのノートブックはこのフォルダー内にあるはずです。

  4. ジョブが作成されたかどうかを確認します。Databricks ワークスペースのサイドバーで、 [ワークフロー]をクリックします。

  5. [ジョブ]タブで、 retrieve-filter-baby-names-jobをクリックします。

  6. [タスク]タブをクリックします。 タスクは 2 つあるはずです: retrieve-baby-names-タスクfilter-baby-names-タスクです

このステップの後にバンドルに変更を加えた場合は、ステップ 6 ~ 7 を繰り返してバンドル設定がまだ有効かどうかを確認し、プロジェクトを再デプロイする必要があります。

ステップ 8: デプロイされたプロジェクトを実行する

このステップでは、ワークスペースでDatabricksジョブを実行します。

  1. 次のように、Databricks CLI を使用してbundle runコマンドを実行します。

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. ターミナルに表示されるRun URLの値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。

  3. Databricksワークスペースで、2 つのタスクが正常に完了し、緑色のタイトル バーが表示されたら、 filter-baby-names-タスクタスクをクリックしてクエリ結果を確認します。

このステップの後にバンドルに変更を加えた場合は、ステップ 6 ~ 8 を繰り返してバンドル設定がまだ有効かどうかを確認し、プロジェクトを再デプロイし、再デプロイされたプロジェクトを実行する必要があります。

ステップ 9: クリーンアップ

このステップでは、展開された 2 つのノートブックとジョブをワークスペースから削除します。

  1. 次のように、Databricks CLI を使用してbundle destroyコマンドを実行します。

    databricks bundle destroy
    
  2. ジョブ削除リクエストを確認します。リソースを完全に破棄するように求められたら、 yと入力してEnterを押します。

  3. ノートブックの削除リクエストを確認します。以前に展開したフォルダーとそのすべてのファイルを完全に破棄するように求められたら、 yと入力してEnterを押します。

bundle destroyコマンドを実行すると、デプロイされたジョブと、デプロイされた 2 つのノートブックを含むフォルダーのみが削除されます。 このコマンドは、最初のノートブックで作成されたbabynames.csvファイルなどの副作用を削除しません。 babybnames.csvファイルを削除するには、次の操作を行います。

  1. Databricks ワークスペースのサイドバーで、 [カタログ]をクリックします。

  2. DBFSの参照をクリックします。

  3. FileStore フォルダをクリックします。

  4. babynames.csvの横にあるドロップダウン矢印をクリックします。 をクリックし、[ 削除] をクリックします。

  5. 開発マシンからもバンドルを削除する場合は、ステップ 1 からローカル ディレクトリを削除できます。

既存のジョブ定義をバンドルに追加する

既存のジョブ定義を基礎として使用して、バンドル構成ファイルで新しいジョブを定義できます。 これを行うには、次のステップを完成させます。

注:

次のステップでは、既存のジョブと同じ設定を持つ新しいジョブを作成します。 ただし、新しいジョブのジョブ ID は既存のジョブのジョブ ID と異なります。 既存のジョブ ID をバンドルに自動的にインポートすることはできません。

ステップ 1: 既存のジョブ定義を YAML 形式で取得する

このステップでは、 Databricksワークスペース ユーザー インターフェイスを使用して、既存のジョブ定義の YAML 表現を取得します。

  1. Databricks ワークスペースのサイドバーで、 [ワークフロー] をクリックします。

  2. [ジョブ]タブで、ジョブの名前リンクをクリックします。

  3. [今すぐ実行]ボタンの横にある省略記号をクリックし、 [YAML の表示] をクリックします。

  4. [作成]タブで、 [コピー]をクリックして、ジョブ定義の YAML をローカル クリップボードにコピーします。

ステップ 2: ジョブ定義 YAML をバンドル構成ファイルに追加する

バンドル構成ファイルで、前のステップからコピーした YAML を、次のようにバンドル構成ファイル内の<job-yaml-can-go-here>というラベルの付いた場所のいずれかに追加します。

resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      <job-yaml-can-go-here>

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      jobs:
        <some-unique-programmatic-identifier-for-this-job>:
          <job-yaml-can-go-here>

ステップ 3: ノートブック、Python ファイル、その他の成果物をバンドルに追加する

既存のジョブで参照されている Python ファイルとノートブックはすべて、バンドルのソースに移動する必要があります。

バンドルとの互換性を高めるために、ノートブックは IPython ノートブック形式 ( .ipynb ) を使用する必要があります。 バンドルをローカルで開発する場合は、 Databricksノートブック ユーザー インターフェイスから[ファイル] > [エクスポート] > [IPython ノートブック]をクリックして、既存のノートブックをDatabricksワークスペースから .ipynb 形式にエクスポートできます。 慣例により、ダウンロードしたノートブックをバンドル内のsrc/ディレクトリに配置する必要があります。

ノートブック、Python ファイル、その他の成果物をバンドルに追加したら、ジョブ定義がそれらを参照していることを確認します。 たとえば、 src/ディレクトリにあるファイル名がhello.ipynbのノートブックで、 src/ディレクトリがsrc/ディレクトリを参照するバンドル構成ファイルと同じフォルダーにある場合、ジョブ定義は次のように表現されます。

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
      - task_key: hello-task
        notebook_task:
          notebook_path: ./src/hello.ipynb

ステップ 4: 新しいジョブを検証、デプロイ、実行する

  1. 次のコマンドを実行して、バンドルの構成ファイルが構文的に正しいことを確認します。

    databricks bundle validate
    
  2. 次のコマンドを実行してバンドルをデプロイします。 このコマンドでは、 <target-identifier>バンドル構成のターゲットの一意のプログラム識別子に置き換えます。

    databricks bundle deploy -t <target-identifier>
    
  3. 次のコマンドでジョブを実行します。

    databricks bundle run -t <target-identifier> <job-identifier>
    
    • <target-identifier> を、バンドル構成のターゲットの一意のプログラム識別子に置き換えます。

    • <job-identifier>を、バンドル構成からのジョブの一意のプログラム識別子に置き換えます。