다음을 통해 공유


Databricks 자산 번들을 사용하여 Azure Databricks에서 작업 개발

단순히 번들이라고도 하는 Databricks 자산 번들에는 배포하려는 아티팩트와 실행하려는 작업과 같은 Azure Databricks 리소스에 대한 설정이 포함되어 있으며 프로그래밍 방식으로 유효성을 검사, 배포 및 실행할 수 있습니다. Databricks 자산 번들이란?을 참조하세요.

이 문서에서는 프로그래밍 방식으로 작업을 관리하는 번들을 만드는 방법을 설명합니다. 워크플로 예약 및 오케스트레이션을 참조하세요. 번들은 Python용 Databricks 자산 번들 기본 번들 템플릿을 사용하여 만들어지며, 이 템플릿은 실행할 작업의 정의와 쌍을 이루는 Notebook으로 구성됩니다. 그런 다음 Azure Databricks 작업 영역에서 배포된 작업의 유효성을 검사, 배포 및 실행합니다.

번들로 이동하려는 Azure Databricks 작업 사용자 인터페이스 또는 API를 사용하여 만든 기존 작업이 있는 경우 번들의 구성 파일에서 정의해야 합니다. 먼저 아래 단계를 사용하여 번들을 만든 다음 번들의 작동 여부를 확인하는 것을 권장합니다. 그런 다음, 번들에 작업 정의, Notebook 및 기타 원본을 추가할 수 있습니다. 번들에 기존 작업 정의 추가를 참조하세요.

요구 사항

  • Databricks CLI 버전 0.218.0 이상. 설치된 Databricks CLI 버전을 확인하려면 databricks -v 명령을 실행합니다. Databricks CLI를 설치하려면 Databricks CLI 설치 또는 업데이트를 참조하세요.
  • 원격 Databricks 작업 영역에는 작업 영역 파일이 활성화되어 있어야 합니다. 작업 영역 파일이란?을 참조하세요.

프로젝트 템플릿으로 번들 만들기

먼저, Databricks 자산 번들 기본 Python 템플릿을 사용하여 번들을 만듭니다. 번들 템플릿에 대한 자세한 내용은 Databricks 자산 번들 프로젝트 템플릿을 참조하세요.

번들을 처음부터 만들려면 수동으로 번들 만들기를 참조하세요.

1단계: 인증 설정

이 단계에서는 개발 컴퓨터의 Databricks CLI와 Azure Databricks 작업 영역 간에 인증을 설정합니다. 이 문서에서는 OAuth U2M(사용자-컴퓨터) 인증과 인증을 위해 상응하는 DEFAULT라는 Azure Databricks 구성 프로필을 사용하려고 하는 것으로 가정합니다.

참고 항목

U2M 인증은 이러한 단계를 실시간으로 시도하는 데 적합합니다. 완전히 자동화된 워크플로의 경우 Databricks는 OAuth M2M(컴퓨터 간) 인증을 대신 사용하는 것이 좋습니다. 인증에서 M2M 인증 설정 지침을 참조하세요.

  1. Databricks CLI를 사용하여 각 대상 작업 영역에 대해 다음 명령을 실행하고 OAuth 토큰 관리를 로컬로 시작합니다.

    다음 명령에서 <workspace-url>를 Azure Databricks 작업 영역 URL로 바꿉니다(예: https://adb-1234567890123456.7.azuredatabricks.net).

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI는 Azure Databricks 구성 프로필로 입력한 정보를 저장하라는 메시지를 표시합니다. Enter를 눌러 제안된 프로필 이름을 수락하거나 새 프로필 또는 기존 프로필의 이름을 입력합니다. 이름이 같은 기존 프로필은 입력한 정보로 덮어쓰여집니다. 프로필을 사용하여 여러 작업 영역에서 인증 컨텍스트를 빠르게 전환할 수 있습니다.

    기존 프로필 목록을 얻으려면 별도의 터미널 또는 명령 프롬프트에서 Databricks CLI를 사용하여 databricks auth profiles 명령을 실행합니다. 특정 프로필의 기존 설정을 보려면 databricks auth env --profile <profile-name> 명령을 실행합니다.

  3. 웹 브라우저에서 화면상의 지침을 완료하여 Azure Databricks 작업 영역에 로그인합니다.

  4. 프로필의 현재 OAuth 토큰 값과 토큰의 예정된 만료 타임스탬프를 보려면 다음 명령 중 하나를 실행합니다.

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    동일한 --host 값을 가진 프로필이 여러 개 있는 경우, Databricks CLI가 올바르게 일치하는 OAuth 토큰 정보를 찾을 수 있도록 --host-p 옵션을 함께 지정해야 할 수 있습니다.

2단계: 번들 초기화

기본 Python 번들 프로젝트 템플릿을 사용하여 번들을 초기화합니다.

  1. 터미널 또는 명령 프롬프트를 사용하여 템플릿의 생성된 번들을 포함하는 로컬 개발 머신의 디렉터리로 전환합니다.

  2. Databricks CLI를 사용하여 bundle init 명령을 실행합니다.

    databricks bundle init
    
  3. Template to use의 경우, Enter를 눌러 기본값 default-python를 그대로 둡니다.

  4. Unique name for this project의 경우 기본값 my_project를 그대로 두거나 다른 값을 입력한 다음 키를 누릅니다 Enter. 이것으로 번들의 루트 디렉터리 이름이 결정됩니다. 이 루트 디렉터리가 현재 작업 디렉터리에 생성됩니다.

  5. Include a stub (sample) notebook의 경우, yes를 선택하고 Enter을 누릅니다.

  6. Include a stub (sample) DLT pipeline의 경우, no를 선택하고 Enter을 누릅니다. 그러면 Databricks CLI가 번들에 샘플 Delta Live Tables 파이프라인을 정의하지 않습니다.

  7. Include a stub (sample) Python package의 경우, no를 선택하고 Enter을 누릅니다. 그러면 Databricks CLI에서 샘플 Python 휠 패키지 파일 또는 관련 빌드 지침을 번들에 추가하지 않습니다.

3단계: 번들 탐색

템플릿이 생성한 파일을 보려면, 새로 생성된 번들의 루트 디렉터리로 전환합니다. 특히 관심 있는 파일은 다음과 같습니다.

  • databricks.yml: 이 파일은 번들 프로그래밍 이름을 지정하고, 작업 정의에 대한 참조를 포함하며, 대상 작업 영역에 대한 설정을 지정합니다.
  • resources/<project-name>_job.yml: 이 파일은 기본 Notebook 태스크를 포함한 작업의 설정을 지정합니다.
  • src/notebook.ipynb: 이 파일은 실행할 때 숫자 1~10이 포함된 RDD를 초기화하는 샘플 Notebook입니다.

작업을 사용자 지정하기 위해 작업 선언의 매핑은 REST API 참조에서 POST /api/2.1/jobs/create에 설명된 대로 작업 만들기 작업의 YAML 형식으로 표현된 요청 페이로드에 해당합니다.

Databricks 자산 번들의 클러스터 설정 재정의에 설명된 기술을 사용하여 번들의 새 작업 클러스터의 설정을 정의, 결합, 재정의할 수 있습니다.

4단계: 프로젝트 번들 구성 파일 유효성 검사

이 단계에서는 번들 구성이 유효한지 확인합니다.

  1. 루트 디렉터리에서 Databricks CLI를 사용하여 다음과 같이 bundle validate 명령을 실행합니다.

    databricks bundle validate
    
  2. 번들 구성 요약이 반환되면 유효성 검사는 성공입니다. 오류가 반환되면 오류를 수정한 다음 이 단계를 반복합니다.

이 단계 후에 번들을 변경한 경우 이 단계를 반복하여 번들 구성이 여전히 유효한지 확인해야 합니다.

5단계: 원격 작업 영역에 로컬 프로젝트 배포

이 단계에서는 원격 Azure Databricks 작업 영역에 로컬 Notebook을 배포하고 작업 영역 내에서 Azure Databricks 작업을 만듭니다.

  1. 번들 루트에서 Databricks CLI를 사용하여 다음과 같이 bundle deploy 명령을 실행합니다.

    databricks bundle deploy -t dev
    
  2. 로컬 Notebook이 배포되었는지 확인: Azure Databricks 작업 영역의 사이드바에서 작업 영역을 클릭합니다.

  3. Users><your-username>> .bundle ><project-name>> dev > files > src 폴더를 클릭합니다. Notebook이 해당 폴더에 있어야 합니다.

  4. 작업이 생성됐는지 확인합니다. Azure Databricks 작업 영역의 사이드바에서 워크플로를 클릭합니다.

  5. 작업 탭에서 [dev <your-username>] <project-name>_job을 클릭합니다.

  6. 작업 탭을 클릭합니다. notebook_task 작업이 있어야 합니다.

이 단계 후에 번들을 변경한 경우 4~5단계를 반복하여 번들 구성이 여전히 유효한지 확인한 다음 프로젝트를 다시 배포해야 합니다.

6단계: 배포된 프로젝트 실행

이 단계에서는 명령줄에서 작업 영역에 있는 Azure Databricks 작업을 실행합니다.

  1. 루트 디렉터리에서 Databricks CLI를 사용하여 다음과 같이 bundle run 명령을 실행하고 <project-name>을 2단계의 프로젝트 이름으로 바꿉니다.

    databricks bundle run -t dev <project-name>_job
    
  2. 터미널에 표시되는 Run URL의 값을 복사하고 이 값을 웹 브라우저에 붙여넣어 Azure Databricks 작업 영역을 엽니다. Databricks 자산 번들로 만든 작업 보기 및 실행을 참조하세요.

  3. Azure Databricks 작업 영역에서 작업 작업이 성공적으로 완료되고 녹색 제목 표시줄이 표시되면 작업 작업을 클릭하여 결과를 확인합니다.

이 단계 후에 번들을 변경한 경우 4~6단계를 반복하여 번들 구성이 여전히 유효한지 확인하고, 프로젝트를 다시 배포하고, 재배포된 프로젝트를 실행해야 합니다.

7단계: 정리

이 단계에서는 배포된 Notebook 및 작업을 작업 영역에서 삭제합니다.

  1. 루트 디렉터리에서 Databricks CLI를 사용하여 다음과 같이 bundle destroy 명령을 실행합니다.

    databricks bundle destroy -t dev
    
  2. 작업 삭제 요청 확인: 리소스를 영구적으로 삭제하라는 메시지가 표시되면 y을 입력하고 Enter을 누릅니다.

  3. Notebook 삭제 요청 확인: 이전에 배포된 폴더와 모든 파일을 영구적으로 삭제하라는 메시지가 표시되면 y을 입력하고 Enter을 누릅니다.

  4. 개발 컴퓨터에서 번들을 삭제하려는 경우 이제 2단계에서 로컬 디렉터리를 삭제할 수 있습니다.

번들에 기존 작업 정의 추가

기존 작업을 기본으로 사용하여 번들 구성 파일에서 작업을 정의할 수 있습니다. 기존 작업 정의를 가져오려면 UI를 사용하여 수동으로 검색하거나 Databricks CLI를 사용하여 프로그래밍 방식으로 생성할 수 있습니다.

번들의 작업 정의에 대한 자세한 내용은 작업을 참조하세요.

UI를 사용하여 기존 작업 정의 가져오기

Azure Databricks 작업 영역 UI에서 기존 작업 정의의 YAML 표현을 얻으려면 다음을 수행합니다.

  1. Azure Databricks 작업 영역의 사이드바에서 워크플로를 클릭합니다.

  2. 작업 탭에서 작업의 이름 링크를 클릭합니다.

  3. 지금 실행 단추 옆에 있는 케밥을 클릭한 다음 코드로 전환(YAML)을 클릭합니다.

  4. 번들의 databricks.yml 파일에 복사한 YAML을 추가하거나 번들 프로젝트의 resources 디렉터리에 작업 구성 파일을 생성하고 databricks.yml 파일을 참조하도록 합니다. (/dev-tools/bundles/settings.md#resources)을 참조하세요.

  5. 기존 작업에서 참조되는 Python 파일 및 Notebook을 다운로드하여 번들의 프로젝트 원본에 추가합니다. 일반적으로 번들 아티팩트는 번들의 src 디렉터리에 있습니다.

    Azure Databricks Notebook 사용자 인터페이스에서 파일 > 내보내기 > IPython Notebook을 클릭하여 Azure Databricks 작업 영역에서 기존 Notebook을 .ipynb 형식으로 내보낼 수 있습니다.

    Notebook, Python 파일 및 기타 아티팩트가 번들에 추가된 후 작업 정의에서 제대로 참조하는지 확인합니다. 예를 들어 번들의 src 디렉터리에 있는 hello.ipynb라는 Notebook의 경우:

    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
          - task_key: hello-task
            notebook_task:
              notebook_path: ../src/hello.ipynb
    

Databricks CLI를 사용하여 기존 작업 정의 생성

기존 작업에 대한 번들 구성을 프로그래밍 방식으로 생성하려면 다음을 수행합니다.

  1. 작업 UI의 작업에 대한 작업 세부 정보 쪽 패널에서 기존 작업의 ID를 검색하거나 Databricks CLI databricks jobs list 명령을 사용합니다.

  2. bundle generate job Databricks CLI 명령을 실행하여 작업 ID를 설정합니다.

    databricks bundle generate job --existing-job-id 6565621249
    

    이 명령은 번들의 resources 폴더에 작업의 번들 구성 파일을 생성하고 참조된 아티팩트를 src 폴더에 다운로드합니다.

    bundle deployment bind를 사용하여 번들의 리소스를 작업 영역에 있는 리소스에 먼저 바인딩하는 경우, 작업 영역의 리소스는 다음 bundle deploy에 바인딩되는 번들에 정의된 구성에 따라 업데이트됩니다. bundle deployment bind에 대한 정보는 번들 리소스 바인딩을 참조하세요.

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

다음 예제에서는 서버리스 컴퓨팅을 사용하는 작업을 만들기 위한 번들 구성을 보여줍니다.

서버리스 컴퓨팅을 사용하여 Notebook 작업이 포함된 작업을 실행하려면 번들 구성 파일에서 job_clusters 구성을 제외합니다.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job-serverless:
      name: retrieve-filter-baby-names-job-serverless
      tasks:
        - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./filter-baby-names.py

  targets:
    development:
      workspace:
        host: <workspace-url>

서버리스 컴퓨팅을 사용하여 Python 작업이 포함된 작업을 실행하려면 environments 구성을 포함합니다.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: serverless-python-tasks

resources:
jobs:
  serverless-python-job:
    name: serverless-job-with-python-tasks

    tasks:
      - task_key: wheel-task-1
        python_wheel_task:
          entry_point: main
          package_name: wheel_package
        environment_key: Default

    environments:
      - environment_key: Default
        spec:
          client: "1"
          dependencies:
            - workflows_authoring_toolkit==0.0.1

targets:
  development:
    workspace:
      host: <workspace-url>

워크플로에 대한 서버리스 컴퓨팅을 사용하여 Azure Databricks 작업 실행을 참조하세요.