다음을 통해 공유


자습서: 첫 번째 사용자 지정 Databricks 자산 번들 템플릿 만들기

이 자습서에서는 특정 Docker 컨테이너 이미지를 사용하여 클러스터에서 특정 Python 작업으로 작업을 실행하는 번들을 만들기 위한 사용자 지정 Databricks 자산 번들 템플릿을 만듭니다.

시작하기 전에

Databricks CLI 버전 0.218.0 이상을 설치합니다. 이미 설치한 경우 명령줄에서 실행 databricks -version 하여 버전이 0.218.0 이상인지 확인합니다.

사용자 프롬프트 변수 정의

번들 템플릿을 만드는 첫 번째 단계는 사용자 프롬프트 변수를 databricks bundle init 정의하는 것입니다. 명령줄에서:

  1. 다음과 같은 빈 디렉터리를 만듭니다 dab-container-template.

    mkdir dab-container-template
    
  2. 디렉터리의 루트에서 다음과 같은 파일을 만듭니다 databricks_template_schema.json.

    cd dab-container-template
    touch databricks_template_schema.json
    
  3. 다음 내용을 databricks_template_schema.json 파일에 추가하고 저장합니다. 각 변수는 번들을 만드는 동안 사용자 프롬프트로 변환됩니다.

    {
      "properties": {
        "project_name": {
          "type": "string",
          "default": "project_name",
          "description": "Project name",
          "order": 1
        }
      }
    }
    

번들 폴더 구조 만들기

다음으로 템플릿 디렉터리에서 명명 resourcessrc하위 디렉터리를 만들고 . 폴더에는 template 생성된 번들에 대한 디렉터리 구조가 포함되어 있습니다. 하위 디렉터리 및 파일의 이름은 사용자 값에서 파생된 경우 Go 패키지 템플릿 구문을 따릅니다.

  mkdir -p "template/resources"
  mkdir -p "template/src"

YAML 구성 템플릿 추가

template 디렉터리에서 이름이 지정된 databricks.yml.tmpl 파일을 만들고 다음 YAML을 추가합니다.

  touch template/databricks.yml.tmpl
  # This is a Databricks asset bundle definition for {{.project_name}}.
  # See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
  bundle:
    name: {{.project_name}}

  include:
    - resources/*.yml

  targets:
    # The 'dev' target, used for development purposes.
    # Whenever a developer deploys using 'dev', they get their own copy.
    dev:
      # We use 'mode: development' to make sure everything deployed to this target gets a prefix
      # like '[dev my_user_name]'. Setting this mode also disables any schedules and
      # automatic triggers for jobs and enables the 'development' mode for Delta Live Tables pipelines.
      mode: development
      default: true
      workspace:
        host: {{workspace_host}}

    # The 'prod' target, used for production deployment.
    prod:
      # For production deployments, we only have a single copy, so we override the
      # workspace.root_path default of
      # /Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
      # to a path that is not specific to the current user.
      #
      # By making use of 'mode: production' we enable strict checks
      # to make sure we have correctly configured this target.
      mode: production
      workspace:
        host: {{workspace_host}}
        root_path: /Shared/.bundle/prod/${bundle.name}
      {{- if not is_service_principal}}
      run_as:
        # This runs as {{user_name}} in production. Alternatively,
        # a service principal could be used here using service_principal_name
        # (see Databricks documentation).
        user_name: {{user_name}}
      {{end -}}

이름이 다른 {{.project_name}}_job.yml.tmpl YAML 파일을 만들어 디렉터리에 배치 template/resources 합니다. 이 새 YAML 파일은 번들의 나머지 정의에서 프로젝트 작업 정의를 분할합니다. 이 파일에 다음 YAML을 추가하여 특정 Docker 컨테이너 이미지를 사용하여 작업 클러스터에서 실행할 특정 Python 작업이 포함된 템플릿 작업을 설명합니다.

  touch template/resources/{{.project_name}}_job.yml.tmpl
  # The main job for {{.project_name}}
  resources:
    jobs:
      {{.project_name}}_job:
        name: {{.project_name}}_job
        tasks:
          - task_key: python_task
            job_cluster_key: job_cluster
            spark_python_task:
              python_file: ../src/{{.project_name}}/task.py
        job_clusters:
          - job_cluster_key: job_cluster
            new_cluster:
              docker_image:
                url: databricksruntime/python:10.4-LTS
              node_type_id: i3.xlarge
              spark_version: 13.3.x-scala2.12

이 예제에서는 기본 Databricks 기본 Docker 컨테이너 이미지를 사용하지만 대신 사용자 지정 이미지를 지정할 수 있습니다.

구성에서 참조되는 파일 추가

다음으로, 디렉터리를 만들고 template/src/{{.project_name}} 템플릿에서 작업에서 참조하는 Python 작업 파일을 만듭니다.

  mkdir -p template/src/{{.project_name}}
  touch template/src/{{.project_name}}/task.py

이제 다음을 추가합니다.task.py

  import pyspark
  from pyspark.sql import SparkSession

  spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()

  print(f'Spark version{spark.version}')

번들 템플릿 구조 확인

번들 템플릿 프로젝트의 폴더 구조를 검토합니다. 다음과 같이 표시됩니다.

  .
  ├── databricks_template_schema.json
  └── template
      ├── databricks.yml.tmpl
      ├── resources
      │   └── {{.project_name}}_job.yml.tmpl
      └── src
          └── {{.project_name}}
              └── task.py

템플릿 테스트

마지막으로 번들 템플릿을 테스트합니다. 새 사용자 지정 템플릿을 기반으로 번들을 생성하려면 새 템플릿 위치를 지정하는 명령을 사용합니다 databricks bundle init . 번들 프로젝트 루트 폴더에서:

mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template

다음 단계

  • Azure Databricks 작업 영역에 Notebook을 배포한 다음 배포된 Notebook을 Azure Databricks 작업으로 실행하는 번들을 만듭니다. Databricks 자산 번들을 사용하여 Azure Databricks에서 작업 개발을 참조 하세요.
  • Azure Databricks 작업 영역에 Notebook을 배포한 다음 배포된 Notebook을 Delta Live Tables 파이프라인으로 실행하는 번들을 만듭니다. Databricks 자산 번들을 사용하여 델타 라이브 테이블 파이프라인 개발을 참조 하세요.
  • MLOps Stack을 배포하고 실행하는 번들을 만듭니다. MLOps 스택에 대한 Databricks 자산 번들을 참조 하세요.
  • GitHub에서 CI/CD(지속적인 통합/지속적인 배포) 워크플로에 번들을 추가합니다. Databricks 자산 번들 및 GitHub Actions를 사용하여 CI/CD 워크플로 실행을 참조 하세요.

리소스