다음을 통해 공유


Databricks 자산 번들 템플릿

이 문서에서는 Databricks CLI 버전 0.218.0 이상에서 작동하는 Databricks 자산 번들 템플릿의 구문을 설명합니다. 번들을 사용하면 Azure Databricks 워크플로를 프로그래밍 방식으로 관리할 수 있습니다. Databricks 자산 번들이란?

번들 템플릿을 사용하면 사용자가 폴더 구조, 빌드 단계 및 작업, 테스트 및 개발 환경 배포 파이프라인에서 공통적인 기타 DevOps IaC(Infrastructure-as-code) 특성을 설정하여 일관되고 반복 가능한 방식으로 번들을 만들 수 있습니다.

예를 들어 설치 시 시간이 많이 걸리는 컴파일 단계를 사용하여 사용자 지정 패키지가 필요한 Databricks 작업을 정기적으로 실행하는 경우 사용자 지정 컨테이너 환경을 지원하는 번들 템플릿을 만들어 개발 루프의 속도를 높일 수 있습니다.

번들 템플릿은 생성될 번들의 디렉터리 구조를 정의하며, 구성 파일 템플릿과 사용자 프롬프트 변수가 databricks_template_schema.json 포함된 파일을 포함합니다databricks.yml.tmpl.

템플릿을 기반으로 번들 만들기

이 섹션에서는 번들 템플릿( Azure Databricks 기본 번들 템플릿 또는 사용자 지정 번들 템플릿)을 사용하는 방법을 설명합니다.

기본 번들 템플릿 사용

Azure Databricks 기본 번들 템플릿을 사용하여 번들을 만들려면 Databricks CLI bundle init 명령을 사용하여 사용할 기본 템플릿의 이름을 지정합니다. 예를 들어 다음 명령은 기본 Python 번들 템플릿을 사용하여 번들을 만듭니다.

databricks bundle init default-python

기본 템플릿 bundle init 을 지정하지 않으면 명령은 선택할 수 있는 사용 가능한 템플릿 집합을 제공합니다.

Azure Databricks는 다음과 같은 기본 번들 템플릿을 제공합니다.

템플릿 설명
default-python Databricks와 함께 Python을 사용하기 위한 템플릿입니다. 이 템플릿은 작업 및 델타 라이브 테이블 파이프라인을 사용하여 번들을 만듭니다. default-python을 참조하세요.
default-sql Databricks와 함께 SQL을 사용하기 위한 템플릿입니다. 이 템플릿에는 SQL 웨어하우스에서 SQL 쿼리를 실행하는 작업을 정의하는 구성 파일이 포함되어 있습니다. default-sql을 참조하세요.
dbt-sql 배포를 위해 로컬 개발 및 번들에 dbt-core를 활용하는 템플릿입니다. 이 템플릿에는 dbt 태스크를 사용하여 작업을 정의하는 구성과 배포된 dbt 작업에 대한 dbt 프로필을 정의하는 구성 파일이 포함되어 있습니다. dbt-sql을 참조하세요.
mlops-stacks 새 MLOps Stacks 프로젝트를 시작하기 위한 고급 전체 스택 템플릿입니다. MLOps 스택에 대한 mlops-stacksDatabricks 자산 번들을 참조하세요.

사용자 지정 번들 템플릿 사용

Azure Databricks 기본 번들 템플릿 이외의 번들 템플릿을 사용하려면 템플릿의 로컬 경로 또는 원격 URL Databricks CLI bundle init 명령에 전달합니다.

예를 들어 다음 명령은 사용자 지정 번들 템플릿 자습서에서 만든 템플릿을 사용합니다dab-container-template.

   databricks bundle init /projects/my-custom-bundle-templates/dab-container-template

번들 템플릿 만들기

번들 템플릿은 Go 패키지 템플릿 구문을 사용합니다. Go 패키지 템플릿 설명서를 참조하세요.

최소한 번들 템플릿 프로젝트에는 다음이 있어야 합니다.

  • databricks_template_schema.json 번들 프로젝트 이름에 대한 하나의 사용자 프롬프트 변수를 정의하는 프로젝트 루트의 파일입니다.
  • databricks.yml.tmpl 템플릿으로 template 만든 번들에 대한 구성을 정의하는 폴더에 있는 파일입니다. databricks.yml.tmpl 파일이 추가 *.yml.tmpl 구성 템플릿을 참조하는 경우 매핑에서 include 이러한 템플릿의 위치를 지정합니다.

필요에 따라 템플릿에서 만든 번들에 미러링 template 할 폴더에 하위 폴더 및 파일을 추가할 수 있습니다.

사용자 프롬프트 변수 정의

기본 번들 템플릿을 빌드하는 첫 번째 단계는 템플릿 프로젝트 폴더와 프로젝트 루트에 명명된 databricks_template_schema.json 파일을 만드는 것입니다. 이 파일에는 사용자가 템플릿을 사용하여 번들을 만들 때 입력 값을 제공하는 변수가 포함되어 있습니다 bundle init. 이 파일의 형식은 JSON 스키마 사양따릅니다.

mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json

파일에 다음을 추가한 databricks_template_schema.json 다음 파일을 저장합니다.

{
   "properties": {
   "project_name": {
      "type": "string",
      "default": "basic_bundle",
      "description": "What is the name of the bundle you want to create?",
      "order": 1
   }
   },
   "success_message": "\nYour bundle '{{.project_name}}' has been created."
}

이 파일에서 다음을 확인할 수 있습니다.

  • project_name 는 유일한 입력 변수 이름입니다.
  • default 는 명령의 일부로 사용자가 --config-file 값을 제공하지 않거나 명령 프롬프트에서 사용자가 재정의 bundle init 하는 경우 선택적 기본값입니다.
  • description는 사용자가 명령의 bundle init 일부로 값을 제공하지 않는 경우 입력 변수와 --config-file 연결된 사용자 프롬프트입니다.
  • order는 명령의 bundle init 일부로 사용자가 값을 제공하지 않으면 각 사용자 --config-file 프롬프트가 표시되는 선택적 순서입니다. order 제공되지 않으면 사용자 프롬프트가 스키마에 나열된 순서대로 표시됩니다.
  • success_message 는 프로젝트를 성공적으로 만들 때 표시되는 선택적 메시지입니다.

폴더 구조 빌드

다음으로 필요한 template 폴더를 만들고 폴더 구조를 작성합니다. 이 구조는 이 템플릿으로 만든 번들로 미러링됩니다. 또한 포함할 파일을 해당 폴더에 넣습니다. 이 기본 번들 템플릿은 폴더에 src 파일을 저장하고 하나의 간단한 전자 필기장을 포함합니다.

mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb

파일에 다음을 추가합니다.simple_notebook.ipynb

print("Hello World!")

구성 템플릿 파일 채우기

이제 폴더에 필요한 databricks.yml.tmpl 파일을 만듭니다.template

touch basic-bundle-template/template/databricks.yml.tmpl

이 파일을 기본 구성 템플릿 YAML로 채웁다. 이 구성 템플릿은 번들 이름, 지정된 Notebook 파일을 사용하는 작업 하나, 이 템플릿을 사용하여 만든 번들에 대해 두 개의 대상 환경을 설정합니다. 또한 번들 대체를 활용하는 것이 좋습니다. 번들 대체를 참조 하세요.

# This is the configuration for the Databricks Asset Bundle {{.project_name}}.

bundle:
  name: {{.project_name}}

# The main job for {{.project_name}}
resources:
    jobs:
        {{.project_name}}_job:
        name: {{.project_name}}_job
        tasks:
            - task_key: notebook_task
            job_cluster_key: job_cluster
            notebook_task:
                notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
            new_cluster:
                node_type_id: i3.xlarge
                spark_version: 13.3.x-scala2.12

targets:
  # The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
  dev:
    mode: development
    default: true
    workspace:
      host: {{workspace_host}}

  prod:
    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
      user_name: {{user_name}}
    {{end -}}

번들 템플릿 테스트

마지막으로 템플릿을 테스트합니다. 새 번들 프로젝트 폴더를 만든 다음 Databricks CLI를 사용하여 템플릿을 사용하여 새 번들을 초기화합니다.

mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template

프롬프트에 대해 .를 What is your bundle project name?입력합니다 my_test_bundle.

테스트 번들을 만들면 스키마 파일의 성공 메시지가 출력됩니다. 폴더의 my-test-bundle 내용을 검사하는 경우 다음이 표시됩니다.

my-test-bundle
   ├── databricks.yml
   └── src
      └── simple_notebook.ipynb

이제 databricks.yml 파일이 사용자 지정됩니다.

# This is the configuration for the Databricks Asset Bundle my-test-bundle.

bundle:
  name: my-test-bundle

# The main job for my-test-bundle
resources:
    jobs:
        my-test-bundle_job:
        name: my-test-bundle_job
        tasks:
            - task_key: notebook_task
                job_cluster_key: job_cluster
                notebook_task:
                    notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
                new_cluster:
                    node_type_id: i3.xlarge
                    spark_version: 13.3.x-scala2.12

targets:
  # The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
  dev:
    mode: development
    default: true
    workspace:
      host: https://my-host.cloud.databricks.com

  # The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
  prod:
    mode: production
    workspace:
      host: https://my-host.cloud.databricks.com
      root_path: /Shared/.bundle/prod/${bundle.name}
    run_as:
      # This runs as someone@example.com in production. Alternatively,
      # a service principal could be used here using service_principal_name
      user_name: someone@example.com

템플릿 공유

이 번들 템플릿을 다른 사용자와 공유하려는 경우 Git에서 지원하고 사용자가 액세스할 수 있는 공급자와 버전 제어에 저장할 수 있습니다. Git URL을 사용하여 명령을 실행 bundle init 하려면 파일이 해당 Git URL을 기준으로 루트 위치에 있는지 확인 databricks_template_schema.json 합니다.

번들 루트를 databricks_template_schema.json 기준으로 파일을 다른 폴더에 배치할 수 있습니다. 그런 다음 명령의 --template-dir 옵션을 사용하여 bundle init 파일이 포함된 해당 폴더를 참조할 databricks_template_schema.json 수 있습니다.

다음 단계

  • Databricks에서 만들고 유지 관리하는 추가 템플릿을 찾아봅니다. GitHub번들 샘플 리포지토리를 참조하세요.
  • Databricks 자산 번들 템플릿에서 MLOps 스택을 사용하려면 MLOps 스택에 대한 Databricks 자산 번들을 참조 하세요.
  • Go 패키지 템플릿에 대해 자세히 알아봅니다. Go 패키지 템플릿 설명서를 참조하세요.