다음을 통해 공유


번들 구성 예제

이 문서에서는 Databricks 자산 번들 기능 및 일반적인 번들 사용 사례에 대한 예제 구성을 제공합니다.

다음 표에 설명된 전체 번들 예제는 번들 예제 GitHub 리포지토리에서 사용할 수 있습니다.

번들 이름 설명
app_with_database OLTP Postgres 데이터베이스에서 백업하는 Databricks 앱이 있는 번들
dashboard_nyc_taxi AI/BI 대시보드가 있는 번들 및 대시보드의 스냅샷을 캡처하고 구독자에게 전자 메일을 전송하는 작업
database_with_catalog OLTP 데이터베이스 인스턴스 및 데이터베이스 카탈로그를 정의하는 번들
databricks_app Databricks 앱을 정의하는 번들
개발_클러스터 개발(다목적) 클러스터를 정의하고 사용하는 번들
job_read_secret (작업_읽기_비밀) 비밀 범위를 정의하는 번들 및 해당 범위에서 읽는 작업이 있는 작업
작업_여러_바퀴 여러 휠 종속성이 있는 작업을 정의하고 사용하는 번들
job_with_run_job_tasks 실행 작업 태스크가 있는 여러 작업이 있는 번들
job_with_sql_notebook SQL Notebook 작업을 사용하는 작업이 있는 번들
스키마가 포함된 파이프라인 Unity 카탈로그 스키마 및 이를 사용하는 파이프라인을 정의하는 번들
private_wheel_packages 작업 프로세스에서 프라이빗 휠 패키지를 사용하는 번들
python_wheel_poetry 시를 사용하여 빌드하는 whl 번들
서버리스 작업 서버리스 컴퓨팅을 사용하여 작업을 실행하는 번들
번들 간 파일 공유 번들 루트 디렉터리 외부에 있는 파일이 포함된 번들입니다.
spark_jar_task Spark JAR 작업을 정의하고 사용하는 번들
작업에서 볼륨으로 쓰기 Unity 카탈로그 볼륨에 파일을 쓰는 번들

번들 시나리오

이 섹션에는 최상위 번들 매핑을 사용하는 방법을 보여 주는 구성 예제가 포함되어 있습니다. 구성 참조를 참조하세요.

JAR 파일을 Unity 카탈로그에 업로드하는 번들

JAR 파일 및 휠 파일과 같은 모든 아티팩트가 Unity 카탈로그 볼륨에 업로드되도록 Unity 카탈로그 볼륨을 아티팩트 경로로 지정할 수 있습니다. 다음 예제 번들은 JAR 파일을 빌드하고 Unity 카탈로그에 업로드합니다. 매핑에 대한 artifact_path 자세한 내용은 artifact_path 참조하세요. artifacts대한 자세한 내용은 아티팩트참조하세요.

bundle:
  name: jar-bundle

workspace:
  host: https://myworkspace.cloud.databricks.com
  artifact_path: /Volumes/main/default/my_volume

artifacts:
  my_java_code:
    path: ./sample-java
    build: 'javac PrintArgs.java && jar cvfm PrintArgs.jar META-INF/MANIFEST.MF PrintArgs.class'
    files:
      - source: ./sample-java/PrintArgs.jar

resources:
  jobs:
    jar_job:
      name: 'Spark Jar Job'
      tasks:
        - task_key: SparkJarTask
          new_cluster:
            num_workers: 1
            spark_version: '14.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
          spark_jar_task:
            main_class_name: PrintArgs
          libraries:
            - jar: ./sample-java/PrintArgs.jar

작업 구성

이 섹션에는 작업 구성 예제가 포함되어 있습니다. 작업 구성 세부 정보는 작업을 참조하십시오.

서버리스 컴퓨팅을 사용하는 작업

Databricks 자산 번들은 서버리스 컴퓨팅에서 실행되는 작업을 지원합니다. 워크플로에 대한 서버리스 컴퓨팅을 사용하여 Lakeflow 작업 실행을 참조하세요. 이를 구성하려면 Notebook 작업이 있는 작업에 대한 clusters 설정을 생략하거나 아래 예제와 같이 환경을 지정할 수 있습니다. Python 스크립트, Python 휠 및 dbt 작업의 경우 서버리스 컴퓨팅에 environment_key 필요합니다. environment_key를 참조하세요.

# A serverless job (no cluster definition)
resources:
  jobs:
    serverless_job_no_cluster:
      name: serverless_job_no_cluster

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: notebook_task
          notebook_task:
            notebook_path: ../src/notebook.ipynb
# A serverless job (environment spec)
resources:
  jobs:
    serverless_job_environment:
      name: serverless_job_environment

      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py

          # The key that references an environment spec in a job.
          # https://docs.databricks.com/api/workspace/jobs/create#tasks-environment_key
          environment_key: default

      # A list of task execution environment specifications that can be referenced by tasks of this job.
      environments:
        - environment_key: default

          # Full documentation of this spec can be found at:
          # https://docs.databricks.com/api/workspace/jobs/create#environments-spec
          spec:
            environment_version: '2'
            dependencies:
              - my-library

여러 휠 파일이 있는 작업

다음 예제 구성들은 여러 *.whl 파일이 포함된 작업을 포함하는 번들을 정의합니다.

# job.yml
resources:
  jobs:
    example_job:
      name: 'Example with multiple wheels'
      tasks:
        - task_key: task

          spark_python_task:
            python_file: ../src/call_wheel.py

          libraries:
            - whl: ../my_custom_wheel1/dist/*.whl
            - whl: ../my_custom_wheel2/dist/*.whl

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 0
            spark_version: 14.3.x-scala2.12
            spark_conf:
              'spark.databricks.cluster.profile': 'singleNode'
              'spark.master': 'local[*, 4]'
            custom_tags:
              'ResourceClass': 'SingleNode'
# databricks.yml
bundle:
  name: job_with_multiple_wheels

include:
  - ./resources/job.yml

workspace:
  host: https://myworkspace.cloud.databricks.com

artifacts:
  my_custom_wheel1:
    type: whl
    build: poetry build
    path: ./my_custom_wheel1

  my_custom_wheel2:
    type: whl
    build: poetry build
    path: ./my_custom_wheel2

targets:
  dev:
    default: true
    mode: development

매개 변수가 있는 작업

다음 예제 구성은 매개 변수를 사용하여 작업을 정의합니다. 작업 매개 변수화에 대한 자세한 내용은 매개 변수화 작업을 참조하세요.

resources:
  jobs:
    job_with_parameters:
      name: job_with_parameters

      tasks:
        - task_key: task_a
          spark_python_task:
            python_file: ../src/file.py
            parameters:
              - '--param1={{ job.parameters.param1 }}'
              - '--param2={{ job.parameters.param2 }}'

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 1
            spark_version: 14.3.x-scala2.12

      parameters:
        - name: param1
          default: value1
        - name: param2
          default: value1

이러한 매개 변수는 다음과 같이 작업 매개 변수bundle run전달하여 런타임에 설정할 수 있습니다.

databricks bundle run -- --param1=value2 --param2=value2

requirements.txt 파일을 사용하는 작업

다음 예제 구성은 requirements.txt 파일을 사용하는 작업을 정의합니다.

resources:
  jobs:
    job_with_requirements_txt:
      name: 'Example job that uses a requirements.txt file'
      tasks:
        - task_key: task
          job_cluster_key: default
          spark_python_task:
            python_file: ../src/main.py
          libraries:
            - requirements: /Workspace/${workspace.file_path}/requirements.txt

일정에 따라 작업

다음 예제에서는 일정에 따라 실행되는 작업에 대한 구성을 보여 줍니다. 작업 일정 및 트리거에 대한 자세한 내용은 일정 및 트리거를 사용하여 작업 자동화를 참조하세요.

이 구성은 지정된 시간에 매일 실행되는 작업을 정의합니다.

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      schedule:
        quartz_cron_expression: '0 0 8 * * ?' # daily at 8am
        timezone_id: UTC
        pause_status: UNPAUSED

이 구성에서 작업은 작업이 마지막으로 실행된 후 일주일 후에 실행됩니다.

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      trigger:
        pause_status: UNPAUSED
        periodic:
          interval: 1
          unit: WEEKS

파이프라인 구성

이 섹션에는 파이프라인 구성 예제가 포함되어 있습니다. 파이프라인 구성 정보는 파이프라인을 참조하세요.

서버리스 컴퓨팅을 사용하는 파이프라인

Databricks 자산 번들은 서버리스 컴퓨팅에서 실행되는 파이프라인을 지원합니다. 이를 구성하려면 파이프라인 serverless 설정을 true.로 설정합니다. 다음 예제 구성은 종속성이 설치된 서버리스 컴퓨팅에서 실행되는 파이프라인과 매시간 파이프라인의 새로 고침을 트리거하는 작업을 정의합니다.

# A pipeline that runs on serverless compute
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      target: ${bundle.environment}
      serverless: true
      environment:
        dependencies:
          - 'dist/*.whl'
      catalog: users
      libraries:
        - notebook:
            path: ../src/my_pipeline.ipynb

      configuration:
        bundle.sourcePath: /Workspace/${workspace.file_path}/src
# This defines a job to refresh a pipeline that is triggered every hour
resources:
  jobs:
    my_job:
      name: my_job

      # Run this job once an hour.
      trigger:
        periodic:
          interval: 1
          unit: HOURS

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: refresh_pipeline
          pipeline_task:
            pipeline_id: ${resources.pipelines.my_pipeline.id}