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 リポジトリを参照してください。