次の方法で共有


Databricks Asset Bundles リソース

Databricks アセット バンドルを使用すると、バンドル構成の resources マッピングでバンドルによって使用される Azure Databricks リソースに関する情報を指定できます。 リソース マッピングリソースの主要なリファレンスに関する記事を参照してください。

この記事では、バンドルでサポートされているリソースの種類について説明し、サポートされている各種類の詳細と例を示します。 その他の例については、バンドル構成の例参照してください。

ヒント

既存のリソースに対して YAML を生成するには、databricks bundle generate コマンドを使用します。 「バンドル構成ファイルの生成」を参照してください。

サポートされているリソース

次の表に、バンドルでサポートされているリソースの種類を示します。 一部のリソースはバンドルで定義してバンドルをデプロイすることで作成でき、一部のリソースはバンドルに含める既存のリソースの参照のみをサポートします。

リソースは、対応する Databricks REST API オブジェクトの作成操作要求ペイロードを使用して定義されます。ここで、オブジェクトのサポートされるフィールドは YAML として表され、リソースのサポートされるプロパティです。 各リソースの対応するペイロードのドキュメントへのリンクを表に示します。

ヒント

databricks bundle validate コマンドは、バンドル構成ファイルで不明なリソース プロパティが見つかった場合に警告を返します。

リソース サポートの作成 対応する REST API オブジェクト
app アプリ オブジェクト
cluster クラスターオブジェクト
dashboard Dashboard オブジェクト
experiment 実験オブジェクト
job ジョブ オブジェクト
モデル (レガシ) モデル (レガシ) オブジェクト
model_serving_endpoint モデルサービングエンドポイントオブジェクト
pipeline [Pipeline object]](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor 品質モニター オブジェクト
registered_model (Unity Catalog) 登録済みモデルオブジェクト
schema (Unity Catalog) スキーマ オブジェクト
volume (Unity Catalog) Volume オブジェクト

app

アプリ リソースは、Databricks アプリを定義します。 Databricks Apps の詳細については、「Databricks Apps とは」を参照してください。.

ヒント

次のコマンドを使用して、Streamlit Databricks アプリでバンドルを初期化できます。

databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

アプリを追加するには、アプリを定義する オブジェクト フィールドと、次のフィールドを指定します。

  • source_code_path - Databricks アプリのソース コードの ./app ローカル パス。 このフィールドは必須です。
  • config - アプリ構成コマンドと環境変数。 これを使用して、さまざまなアプリのデプロイ ターゲットを指定できます。

次の例では、バンドルによって作成されたジョブを管理する my_app という名前のアプリを作成します。

resources:
  jobs:
    # Define a job in the bundle
    hello_world:
      name: hello_world
      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py
          environment_key: default

      environments:
        - environment_key: default
          spec:
            client: "1"

  # Define an app that manages the job in the bundle
  apps:
    job_manager:
      name: "job_manager_app"
      description: "An app which manages a job created by this bundle"

      # The location of the source code for the app
      source_code_path: ../src/app

      # The configuration for running the app
      config:
        command:
          - flask
          - --app
          - app
          - run
          - --debug
        env:
          - name: JOB_ID
            value: ${resources.jobs.hello_world.id}

      # The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
      resources:
        - name: "app-job"
          job:
            id: ${resources.jobs.hello_world.id}
            permission: "CAN_MANAGE_RUN"

完全な Databricks アプリのサンプル バンドルについては、bundle-examples GitHub リポジトリを参照してください。

cluster

クラスター リソースは、万能クラスターを定義します。

次の例では、my_cluster という名前のクラスターを作成し、my_jobでノートブックを実行するために使用するクラスターとして設定します。

bundle:
  name: clusters

resources:
  clusters:
    my_cluster:
      num_workers: 2
      node_type_id: "i3.xlarge"
      autoscale:
        min_workers: 2
        max_workers: 7
      spark_version: "13.3.x-scala2.12"
      spark_conf:
        "spark.executor.memory": "2g"

  jobs:
    my_job:
      tasks:
        - task_key: test_task
          notebook_task:
            notebook_path: "./src/my_notebook.py"

dashboard

ダッシュボード リソースを使用すると、バンドルで AI/BI ダッシュボードを管理できます。 AI/BI ダッシュボードの詳細については、「ダッシュボードの」を参照してください。

次の例では、NYC タクシー乗車分析 ダッシュボード サンプルを Databricks ワークスペースに含め、デプロイします。

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: "NYC Taxi Trip Analysis"
      file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}

UI を使用してダッシュボードを変更する場合、ui を使用して行われた変更は、bundle generateを使用して明示的に更新しない限り、ローカル バンドルのダッシュボード JSON ファイルには適用されません。 --watch オプションを使用して、ダッシュボードへの変更を継続的にポーリングおよび取得できます。 「バンドル構成ファイルの生成」を参照してください。

さらに、リモート ワークスペースとは異なるダッシュボード JSON ファイルを含むバンドルをデプロイしようとすると、エラーが発生します。 リモート ワークスペース内のダッシュボードを強制的に展開し、ローカル ワークスペースで上書きするには、--force オプションを使用します。 「バンドルをデプロイする」を参照してください。

experiment

experiment リソースを使用すると、バンドル内に MLflow 実験を定義できます。 MLflow 実験の詳細については、「MLflow 実験を使用してトレーニング実行を整理する」を参照してください。

次の例では、すべてのユーザーが表示できる実験を定義します。

resources:
  experiments:
    experiment:
      name: my_ml_experiment
      permissions:
        - level: CAN_READ
          group_name: users
      description: MLflow experiment used to track runs

job

ジョブ リソースを使用すると、ジョブとそれに対応するタスクをバンドルに 定義できます。 ジョブの詳細については、「Databricksでのオーケストレーションの概要」を参照してください。 Databricks アセット バンドル テンプレートを使用してジョブを作成するチュートリアルについては、「Databricks Asset Bundlesを使用して Azure Databricks でジョブを開発する」を参照してください。

次の例では、1 つのノートブック タスクでリソース キー hello-job を持つジョブを定義します。

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

ジョブ タスクの定義とジョブ設定のオーバーライドの詳細については、「Databricks Asset Bundlesでのジョブへのタスクの追加」、Databricks Asset Bundlesでのジョブ タスク設定のオーバーライド、および Databricks Asset Bundles でのクラスター設定のオーバーライドを参照してください。

モデル (レガシー)

モデル リソースを使用すると、バンドルで レガシ モデルを定義できます。 Databricks では、代わりに Unity カタログ 登録済みモデル 使用することをお勧めします。

model_serving_endpoint

model_serving_endpoint リソースを使用すると、エンドポイント を提供モデルを定義できます。 「エンドポイントを提供するモデルの管理」を参照してください。

次の例では、エンドポイントを提供する Unity カタログ モデルを定義します。

resources:
  model_serving_endpoints:
    uc_model_serving_endpoint:
      name: "uc-model-endpoint"
      config:
        served_entities:
        - entity_name: "myCatalog.mySchema.my-ads-model"
          entity_version: "10"
          workload_size: "Small"
          scale_to_zero_enabled: "true"
        traffic_config:
          routes:
          - served_model_name: "my-ads-model-10"
            traffic_percentage: "100"
      tags:
      - key: "team"
        value: "data science"

quality_monitor (Unity Catalog)

quality_monitor リソースを使用すると、Unity カタログ のテーブル モニターを定義できます。 モニターの詳細については、「Monitor モデルの品質とエンドポイントの正常性」を参照してください。

次の例では、品質モニターを定義します。

resources:
  quality_monitors:
    my_quality_monitor:
      table_name: dev.mlops_schema.predictions
      output_schema_name: ${bundle.target}.mlops_schema
      assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
      inference_log:
        granularities: [1 day]
        model_id_col: model_id
        prediction_col: prediction
        label_col: price
        problem_type: PROBLEM_TYPE_REGRESSION
        timestamp_col: timestamp
      schedule:
        quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
        timezone_id: UTC

登録済みモデル (Unity カタログ)

登録されたモデル リソースを使用すると、Unity カタログでモデルを定義できます。 Unity カタログ 登録済みモデルの詳細については、「Unity Catalogでのモデルのライフサイクルの管理」を参照してください。

次の例では、Unity カタログに登録されているモデルを定義します。

resources:
  registered_models:
      model:
        name: my_model
        catalog_name: ${bundle.target}
        schema_name: mlops_schema
        comment: Registered model in Unity Catalog for ${bundle.target} deployment target
        grants:
          - privileges:
              - EXECUTE
            principal: account users

pipeline

パイプライン リソースを使用すると、デルタ ライブ テーブル パイプラインを作成できます。 パイプラインの詳細については、「デルタ ライブ テーブルとは 」を参照してください。. Databricks アセット バンドル テンプレートを使用してパイプラインを作成するチュートリアルについては、「Databricks アセット バンドルを使用して Delta Live Tables パイプラインを開発する」を参照してください。

次の例では、リソース キーが hello-pipelineされたパイプラインを定義します。

resources:
  pipelines:
    hello-pipeline:
      name: hello-pipeline
      clusters:
        - label: default
          num_workers: 1
      development: true
      continuous: false
      channel: CURRENT
      edition: CORE
      photon: false
      libraries:
        - notebook:
            path: ./pipeline.py

schema (Unity Catalog)

スキーマ リソースの種類を使用すると、バンドルの一部として作成されたワークフローおよびパイプライン内のテーブルやその他の資産に Unity カタログ スキーマを定義できます。 他のリソースの種類とは異なるスキーマには、次の制限があります。

  • スキーマ リソースの所有者は常にデプロイ ユーザーであり、変更することはできません。 バンドルで run_as が指定されている場合、スキーマに対する操作では無視されます。
  • スキーマ リソースで使用できるのは、対応する Schemas オブジェクト作成 API でサポートされているフィールドのみです。 たとえば、enable_predictive_optimization は、更新 APIでのみ使用可能であるため、サポートされていません。

例示

次の例では、ターゲットとして my_schema キーを持つ Unity カタログ スキーマを作成するリソース キー my_pipeline を含むパイプラインを定義します。

resources:
  pipelines:
    my_pipeline:
      name: test-pipeline-{{.unique_id}}
      libraries:
        - notebook:
            path: ./nb.sql
      development: true
      catalog: main
      target: ${resources.schemas.my_schema.id}

  schemas:
    my_schema:
      name: test-schema-{{.unique_id}}
      catalog_name: main
      comment: This schema was created by DABs.

最上位レベルの許可マッピングは Databricks アセット バンドルではサポートされていないため、スキーマの許可を設定する場合は、schemas マッピング内でスキーマの許可を定義します。 許可の詳細については、「権限の表示、付与、取り消しを参照してください。

次の例では、許可を使用して Unity カタログ スキーマを定義します。

resources:
  schemas:
    my_schema:
      name: test-schema
      grants:
        - principal: users
          privileges:
            - SELECT
        - principal: my_team
          privileges:
            - CAN_MANAGE
      catalog_name: main

volume (Unity Catalog)

ボリューム リソースの種類を使用すると、Unity カタログ ボリューム をバンドルの一部として定義して作成できます。 ボリュームが定義されたバンドルをデプロイする場合は、次の点に注意してください。

  • ボリュームは、ワークスペースに存在するまで、バンドルの artifact_path で参照できません。 そのため、Databricks アセット バンドルを使用してボリュームを作成する場合は、まずバンドル内のボリュームを定義し、それをデプロイしてボリュームを作成してから、後続のデプロイで artifact_path で参照する必要があります。
  • デプロイターゲットがmode: developmentに構成されている場合、バンドル内のボリュームにはdev_${workspace.current_user.short_name}のプレフィックスは付加されません。 ただし、このプレフィックスは手動で構成できます。 カスタム プリセット を参照してください。

次の例では、キー my_volumeを使用して Unity カタログ ボリュームを作成します。

resources:
  volumes:
    my_volume:
      catalog_name: main
      name: my_volume
      schema_name: my_schema

Unity Catalog ボリューム内のファイルに書き込むジョブを実行するバンドルの例については、バンドルのサンプル GitHub リポジトリを参照してください。