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

プレビュー

この機能はパブリックプレビュー段階です。

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

この記事では、ローカル開発セットアップから完了して、プログラムでジョブを管理するバンドルを使用できる手順について説明します。 Databricks Workflowsの概要を参照してください。

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

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

要件

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

  • リモート ワークスペースでは、ワークスペース ファイルが有効になっている必要があります。 「 ワークスペース ファイルとは」を参照してください。

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

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

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

これらのステップでは、Python 用の Databricks 当然バンドル テンプレートを使用してバンドルを作成します。これは、ノートブックまたは Python コードと、それを実行するジョブの定義との組み合わせで構成されます。 次に、Databricks ワークスペース内でデプロイされたジョブを検証、デプロイ、および実行します。

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

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

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

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

    次のコマンドで、 <workspace-url> を Databricks ワークスペース インスタンスの URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.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. Dataricks CLI を使用して、 bundle init コマンドを実行します。

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

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

  5. バンドルにサンプルノートブックを含める場合は、 Include a stub (sample) notebookでデフォルト値の yes のままにして Enterを押します。 これにより、バンドル内の src ディレクトリにサンプル ノートブックが作成されます。

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

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

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

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

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

  • resources/<project-name>_job.yml: このファイルは、ジョブの設定を指定します。

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

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

ヒント

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

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

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

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

    databricks bundle validate
    
  2. バンドル構成の JSON 表現が返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。

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

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

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

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

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

  3. src フォルダー> [ユーザー] > <your-username> > .bundle > <project-name> > 開発>ファイルをクリックします。ノートブックはこのフォルダーにある必要があります。

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

  5. [ジョブ] タブで、[開発<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 ワークスペース内のジョブから、デプロイされたノートブックを検証、デプロイ、および実行します。 これらのステップは、「Create your first workflow with a Databricks job」というタイトルのクイックスタートを自動化します。

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

バンドルには、デプロイするアーティファクトと、実行するリソースの設定が含まれています。

  1. 開発用コンピューターに空のディレクトリを作成または識別します。

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

ヒント

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

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

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

このステップでは、プロジェクトに 2 つのノートブックを追加します。 最初のノートブックは、ニューヨーク州保健省の公開データソースから2007年以降のトレンドの赤ちゃんの名前のリストを取得します。 部門のWebサイトで、 赤ちゃんの名前:名前によるトレンド:2007年以降 を参照してください。 この最初のノートブックは、このデータを DBFS の Databricks ワークスペースの FileStore フォルダーに保存します。 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/myeu-hzra/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("dbfs:/FileStore/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("dbfs:/FileStore/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").rdd.map(lambda row : row[0]).collect()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

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

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

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

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

    databricks bundle schema > bundle_config_schema.json
    
  3. ステップ 5 の後半で、バンドル構成ファイルの先頭に次のコメントを追加し、バンドル構成ファイルを指定した JSON スキーマ・ファイルに関連付けることに注意してください。

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

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

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

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

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

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

    databricks bundle schema > bundle_config_schema.json
    
  2. バンドル構成 JSON スキーマ ファイルを認識するように IntelliJ IDEA を構成し、「カスタム JSON スキーマの構成」の手順に従って 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://dbc-a1b2345c-d6e7.cloud.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://dbc-a1b2345c-d6e7.cloud.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: i3.xlarge
            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>

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

ヒント

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

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

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

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

    databricks bundle validate
    
  2. バンドル構成の JSON 表現が返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。

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

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

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

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

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

  3. [ユーザー] > <your-username> > .bundle > 赤ちゃんの名前>開発> ファイル フォルダーをクリックします。2 つのノートブックはこのフォルダにあるはずです。

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

  5. [ジョブ] タブで、[取得- フィルター-赤ちゃん名-ジョブ] をクリックします。

  6. [タスク] タブをクリックします。赤ちゃん名の取得タスクと赤ちゃん名のフィルター タスクの 2 つの タスクが必要です。

このステップの後にバンドルに変更を加えた場合は、ステップ 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 つのタスクが正常に完了し、緑色のタイトル バーが表示されたら、 フィルター - 赤ちゃんの名前-タスク タスクをクリックしてクエリーの結果を表示します。

このステップの後にバンドルに変更を加えた場合は、ステップ 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. [ファイルストア] フォルダをクリックします。

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

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

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

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

次の手順では、既存のジョブと同じ設定を持つ新しいジョブを作成します。 ただし、新しいジョブには、既存のジョブとは異なるジョブ 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> をバンドル構成のターゲットの一意のプログラム ID に置き換えます。

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

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

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

サーバーレスコンピュートを使用するジョブを構成する

プレビュー

サーバレス コンピュート for ワークフローはパブリック プレビュー中です。 資格と有効化に関する情報については、 「サーバレス コンピュートのパブリック プレビューを有効にする」を参照してください。

次の例は、サーバーレス コンピュートを使用するジョブを作成するためのバンドル構成を示しています。

サーバーレス コンピュートを使用して、コンピュータータスクを含むジョブを実行するには、バンドル構成ファイルからjob_clusters構成を省略します。

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

resources:
  jobs:
    retrieve-filter-baby-names-job-serverless:
      name: retrieve-filter-baby-names-job-serverless
      tasks:
        - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./filter-baby-names.py

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

サーバーレス コンピュートを使用してPythonタスクを含むジョブを実行するには、environments 構成を含めます。

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: serverless-python-tasks

resources:
jobs:
  serverless-python-job:
    name: serverless-job-with-python-tasks

    tasks:
      - task_key: wheel-task-1
        python_wheel_task:
          entry_point: main
          package_name: wheel_package
        environment_key: Default

    environments:
      - environment_key: Default
        spec:
          client: "1"
          dependencies:
            - workflows_authoring_toolkit==0.0.1

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

ワークフローについては、「サーバレス コンピュートを使用してDatabricksジョブを実行する」を参照してください。