宣言型オートメーション バンドルを使用してジョブを開発する

宣言型オートメーション バンドル (旧称 Databricks Asset Bundle) には、デプロイする成果物と、実行するジョブなどの Azure Databricks リソースの設定が含まれており、プログラムで検証、デプロイ、実行できます。 「宣言型オートメーション バンドルとは」を参照してください。

このページでは、プログラムによってジョブを管理するバンドルを作成する方法について説明します。 「Lakeflow ジョブ」を参照してください。 このバンドルは、Python 用の宣言型オートメーション バンドル の既定のバンドル テンプレートを使用して作成されます。このテンプレートは、ノートブックと、それを実行するジョブの定義で構成されます。 次に、お使いの Azure Databricks ワークスペースでジョブを検証し、デプロイし、実行します。

ヒント

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

バンドルを最初から作成する場合は、「バンドルを手動で作成する」を参照してください。

要件

  • Databricks CLI バージョン 0.218.0 以降。 インストールされている Databricks CLI のバージョンを確認するには、databricks -v コマンドを実行します。 Databricks CLI のインストールについては、「Databricks CLI のインストールまたは更新」をご覧ください。
  • テストを実行し、IDE からこのプロジェクトの依存関係をインストールするには、uv が必要です。
  • リモート Databricks ワークスペースでワークスペース ファイルが有効になっている必要があります。 「ワークスペース ファイルとは」をご覧ください。
  • 既存のカタログ。 カタログを作成するには、「カタログの 作成」を参照してください。

手順 1: 認証を設定する

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

注

U2M 認証は、これらの手順をリアルタイムで試す場合に適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 OAuth を使用した Azure Databricks へのサービス プリンシパル アクセスの承認に関するページの M2M 認証のセットアップ手順を参照してください。

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

    次のコマンドの <workspace-url> は、Azure Databricks のワークスペースごとの URL (例: https://adb-1234567890123456.7.azuredatabricks.net) に置き換えます。

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

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

  3. Web ブラウザーで、画面の指示に従って Azure 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 値が同じプロファイルが複数ある場合は、正しく一致する OAuth トークン情報を Databricks CLI が見つけられるように、必要に応じて --host と -p の両オプションを指定します。

手順 2: バンドルを初期化する

既定の Python バンドル プロジェクト テンプレートを使用してバンドルを初期化します。

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

  2. Databricks 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 job that runs a notebook では、yes を選択して Enter キーを押します。

  6. Include an ETL pipeline では、no を選択して Enter キーを押します。

  7. Include a stub (sample) Python package では、no を選択して Enter キーを押します。

  8. Use serverless では、yes を選択して Enter キーを押します。 これにより、Databricks CLI は、サーバーレス コンピューティングで実行するようにバンドルを構成するように指示します。

  9. Default catalog for any tables created by this project [hive_metastore]には、既存の Unity カタログ カタログの名前を入力します。

  10. Use a personal schema for each user working on this project.の場合は、[yes] を選択します。

手順 3: バンドルを調べる

テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替えます。 特に重要なファイルは次のとおりです。

  • databricks.yml: このファイルは、バンドルのプログラム名を指定し、バンドルのファイルへの参照を含み、カタログ変数とスキーマ変数を定義し、ターゲット ワークスペースの設定を指定します。
  • resources/sample_job.job.yml: このファイルは、既定のノートブック タスクを含むジョブの設定を指定します。 ジョブ設定については、 ジョブを参照してください。
  • src/: このフォルダーには、ジョブのソース ファイルが含まれています。
  • src/sample_notebook.ipynb: このノートブックはサンプル テーブルを読み取ります。
  • tests/: このフォルダーには、単体テストのサンプルが含まれています。
  • README.md: このファイルには、このバンドル テンプレートの概要と使用に関する追加情報が含まれています。

ヒント

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

手順 4: バンドル構成を検証する

次に、バンドル構成が有効かどうかを確認します。

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

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

手順 5: バンドルをリモート ワークスペースにデプロイする

次に、リモートの Azure Databricks ワークスペースにジョブをデプロイし、ワークスペース内のジョブを確認します。

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

    databricks bundle deploy --target dev
    
  2. ノートブックがデプロイされたことを確認します。

    1. Azure Databricks ワークスペースのサイドバーで、[ ワークスペース] をクリックします。
    2. Users ><your-username>> .bundle ><project-name>> dev > files > src フォルダーをクリックします。 ノートブックはこのフォルダー内にあるはずです。
  3. ジョブが作成されたかどうかを確認します。

    1. Azure Databricks ワークスペースのサイドバーで、ジョブ & パイプライン をクリックします。
    2. 必要に応じて、ジョブ と 私が所有 フィルターを選択します。
    3. [dev <your-username>] sample_job をクリックします。
    4. [ タスク ] タブをクリックします。 notebook_taskが 1 つあるはずです。

この手順の後でバンドルを変更した場合は、手順 4 と 5 を繰り返して、バンドルの構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。

手順 6: デプロイされたジョブを実行する

次に、コマンド ラインからワークスペースでジョブの実行をトリガーします。

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

    databricks bundle run --target dev sample_job
    
  2. ターミナルに表示される Run URL の値をコピーし、この値を Web ブラウザーに貼り付けて Azure Databricks ワークスペースを開きます。 「宣言型オートメーション バンドルを使用して作成されたジョブの表示と実行」を参照してください

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

この手順の後でバンドルを変更した場合は、手順 4 から 6 を繰り返し、バンドルの構成がまだ有効かどうかを確認して、プロジェクトを再デプロイし、再デプロイされたプロジェクトを実行する必要があります。

手順 7: テストを実行する

最後に、 pytest を使用してテストをローカルで実行します。

uv run pytest

手順 8: クリーンアップ

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

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

    databricks bundle destroy --target dev
    
  2. すべてのワークスペース ファイルとディレクトリを永続的に表示するように求められたら、「 y 」と入力し、 Enterキーを押します。

  3. また、開発用コンピューターからバンドルを削除する場合は、ローカル プロジェクト ディレクトリを削除できます。