다음을 통해 공유


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 대시보드에 샘플을 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를 사용하여 대시보드를 수정하는 경우 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 카탈로그 스키마을 정의할 수 있습니다. 다른 리소스 종류와 다른 스키마에는 다음과 같은 제한 사항이 있습니다.

예제

다음 예제에서는 리소스 키 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 리포지토리를 참고하세요.