Databricks 자산 번들 리소스
Databricks 자산 번들을 사용하면 번들 구성의 resources
매핑에서 번들에서 사용하는 Azure Databricks 리소스에 대한 정보를 지정할 수 있습니다.
리소스 매핑 및 리소스 키 참조를 확인하세요.
이 문서에서는 번들에 대해 지원되는 리소스 종류를 간략하게 설명하고 지원되는 각 유형에 대한 세부 정보 및 예제를 제공합니다. 추가 예제는 번들 구성 예제참조하세요.
팁
기존 리소스에 대한 YAML을 생성하려면 databricks bundle generate
명령을 사용합니다.
번들 구성 파일생성을 참조하세요.
지원되는 리소스
다음 표에서는 번들에 대해 지원되는 리소스 종류를 나열합니다. 일부 리소스는 번들에 정의하고 번들을 배포하여 만들 수 있으며, 일부 리소스는 번들에 포함할 기존 리소스 참조만 지원합니다.
리소스는 해당 Databricks REST API 개체의 만들기 작업 요청 페이로드를 사용하여 정의됩니다. 여기서 YAML로 표현된 개체의 지원되는 필드는 리소스의 지원되는 속성입니다. 각 리소스의 해당 페이로드에 대한 설명서에 대한 링크가 표에 나열됩니다.
팁
databricks bundle validate
명령은 번들 구성 파일에서 알 수 없는 리소스 속성이 발견되면 경고를 반환합니다.
자원 | 지원 만들기 | 해당 REST API 개체 |
---|---|---|
앱 | ✓ | 앱 개체 |
클러스터 | ✓ | Cluster 개체 |
대시보드 | 대시보드 개체 | |
실험 | ✓ | 실험 개체 |
작업 | ✓ | Job 개체 |
모델(레거시) | ✓ | Model(레거시) 개체 |
model_serving_endpoint | ✓ | 엔드포인트 개체 제공하는 |
파이프라인 | ✓ | [파이프라인 개체](https://docs.databricks.com/api/azure/workspace/pipelines/create) |
quality_monitor | ✓ | 품질 모니터 개체 |
registered_model(Unity 카탈로그) | ✓ | 등록된 모델 개체 |
스키마(Unity 카탈로그) | ✓ | 스키마 개체 |
볼륨 (유니티 카탈로그) | ✓ | Volume 개체 |
앱
앱 리소스는 Databricks 앱을 정의합니다. Databricks 앱에 대한 자세한 내용은 Databricks 앱이란?을 참조하세요..
팁
다음 명령을 사용하여 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 앱 예제 번들은 번들 예제 GitHub 리포지토리참조하세요.
클러스터
클러스터 리소스는 다목적 클러스터정의합니다.
예시
다음 예제에서는 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"
대시보드
대시보드 리소스를 사용하면 AI/BI 대시보드를 번들로 관리할 수 있습니다. AI/BI 대시보드에 대한 자세한 내용은 대시보드참조하세요.
예시
다음 예제에서는 NYC Taxi Trip Analysis 대시보드에
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를 사용하여 대시보드를 수정하는 경우 bundle generate
사용하여 명시적으로 업데이트하지 않는 한 UI를 통해 수정한 내용은 로컬 번들의 대시보드 JSON 파일에 적용되지 않습니다.
--watch
옵션을 사용하여 대시보드에 대한 변경 내용을 지속적으로 폴링하고 검색할 수 있습니다.
번들 구성 파일생성을 참조하세요.
또한 원격 작업 영역에 있는 것과 다른 대시보드 JSON 파일이 포함된 번들을 배포하려고 하면 오류가 발생합니다. 원격 작업 영역의 대시보드를 로컬 대시보드로 강제로 배포하고 덮어쓰려면 --force
옵션을 사용합니다.
번들배포를 참조하세요.
실험
실험 리소스를 사용하면 번들에 MLflow 실험을 정의할 수 있습니다. MLflow 실험과 관련된 정보를 얻으려면 MLflow 실험을 사용하여 학습 실행을 구성하는 방법을 참조하세요.
예시
다음 예제에서는 모든 사용자가 볼 수 있는 실험을 정의합니다.
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
직업
번들에서 작업과 해당 작업에 연결된 태스크를 정의할 수 있도록 작업 리소스를 사용하십시오. 작업에 대한 정보는 Databricks의 오케스트레이션 개요를 참조하세요. Databricks 자산 번들 템플릿을 사용하여 작업을 만드는 방법에 대한 자습서가 필요하다면, Databricks 자산 번들을 사용하여 Azure Databricks에서 작업을 개발을 참조하세요.
예시
다음 예제에서는 리소스 키 hello-job
을 사용하여 하나의 노트북 작업을 포함한 작업을 정의합니다.
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
작업을 정의하고 작업 설정을 재정의하는 방법에 대한 자세한 내용은 Databricks 자산 번들 작업에 작업 추가, Databricks 자산 번들 작업 설정 재정의, 및 Databricks 자산 번들 클러스터 설정을 재정의하는를 참조하세요.
모델(기존)
모델 리소스를 사용하면 번들에 레거시 모델을 정의할 수 있습니다. 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"
품질_모니터(Unity 카탈로그)
quality_monitor 리소스를 사용하면 Unity 카탈로그 테이블 모니터를 정의할 수 있습니다. 모니터에 대한 자세한 내용은 모니터 모델 품질 및 엔드포인트 상태참조하세요.
예시
다음 예제에서는 품질 모니터를 정의합니다.
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
registered_model(Unity 카탈로그)
등록된 모델 리소스를 사용하면 Unity 카탈로그에서 모델을 정의할 수 있습니다. Unity 카탈로그에서 등록된 모델에 대한 자세한 내용은 모델 수명 주기 관리를 참조하세요.
예시
다음 예제에서는 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
파이프라인
파이프라인 리소스를 사용하면 Delta Live Tables 파이프라인을 만들 수 있습니다. 파이프라인에 대한 자세한 내용은 Delta Live Tables이란 무엇입니까?. Databricks Asset Bundles 템플릿을 사용하여 파이프라인을 만드는 방법에 대한 자습서는 Databricks Asset Bundles를 사용한 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
스키마(Unity 카탈로그)
스키마 리소스 유형을 사용하면 번들의 일부로 생성된 워크플로 및 파이프라인의 테이블 및 기타 자산에 대한 Unity 카탈로그 스키마을 정의할 수 있습니다. 다른 리소스 종류와 다른 스키마에는 다음과 같은 제한 사항이 있습니다.
- 스키마 리소스의 소유자는 항상 배포 사용자이며 변경할 수 없습니다. 번들에
run_as
가 지정되면 스키마에 대한 작업에서 이를 무시합니다. -
스키마 개체에서 지원하는 필드만 스키마 리소스에서 사용 가능하며, API를 생성합니다. 예를 들어
enable_predictive_optimization
업데이트 API만 사용할 수 있으므로 지원되지 않습니다.
예제
다음 예제에서는 리소스 키 my_pipeline
을(를) 사용하여 파이프라인을 정의하고, 키 my_schema
을(를) 대상으로 하여 Unity 카탈로그 스키마를 만듭니다.
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
볼륨(Unity 카탈로그)
볼륨 리소스 유형을 사용하여 번들의 일부로 Unity 카탈로그의 볼륨을 정의하고 생성할 수 있습니다. 볼륨이 정의된 번들을 배포하는 경우 다음 사항에 유의하세요.
- 작업 영역에 볼륨이 존재하기 전까지
artifact_path
에서 번들에 대한 참조가 불가능합니다. 따라서 Databricks 자산 번들을 사용하여 볼륨을 만들려면 먼저 번들 내에서 볼륨을 정의하고 그것을 배포하여 볼륨을 생성한 후, 후속 배포에서artifact_path
를 참조해야 합니다. - 배포 대상이
dev_${workspace.current_user.short_name}
로 설정된 경우, 번들에 있는 볼륨에mode: development
접두사가 추가되지 않습니다. 그러나 이 접두사를 수동으로 구성할 수 있습니다. 사용자 지정 사전 설정참조하세요.
예시
다음 예제에서는 키 my_volume
사용하여 Unity 카탈로그 볼륨을 만듭니다.
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Unity 카탈로그 볼륨의 파일에 기록하는 작업을 실행하는 예제 번들을 보려면 번들 예제 GitHub 리포지토리를 참고하세요.