이 자습서에서는 처음부터 Databricks 자산 번들을 만듭니다. 이 간단한 번들은 두 개의 노트북과 이 노트북들을 실행하는 Azure Databricks 작업의 정의로 구성됩니다. 그런 다음 Azure Databricks 작업 영역에서 작업의 유효성을 검사, 배포 및 실행합니다. 이러한 단계는 Lakeflow 작업을 사용하여 첫 번째 워크플로 만들기라는 빠른 시작을 자동화합니다.
요구 사항
- Databricks CLI 버전 0.218.0 이상. 설치된 Databricks CLI 버전을 확인하려면
databricks -v명령을 실행합니다. Databricks CLI를 설치하려면 Databricks CLI 설치 또는 업데이트를 참조하세요. - Databricks CLI에 대해 구성된 인증입니다. U2M 인증은 이러한 단계를 실시간으로 시도하는 데 적합합니다. Databricks CLI 인증을 참조하세요.
- 원격 Databricks 작업 영역에는 작업 영역 파일이 활성화되어 있어야 합니다. 작업 영역 파일이란?을 참조하세요.
1단계: 번들 만들기
번들에는 배포하려는 아티팩트와 실행하려는 리소스에 대한 설정이 포함됩니다.
- 개발 머신에서 빈 디렉터리를 만들거나 식별합니다.
- 터미널의 빈 디렉터리로 전환하거나 IDE에서 엽니다.
팁
Git 공급자에서 복제된 리포지토리가 포함된 디렉터리를 사용할 수도 있습니다. 이렇게 하면 외부 버전 제어를 사용하여 번들을 관리하고 프로젝트에서 다른 개발자 및 IT 전문가와 보다 쉽게 공동 작업할 수 있습니다.
이 데모에 대한 리포지토리를 복제하도록 선택하는 경우 Databricks는 리포지토리가 비어 있거나 기본 파일(예: README, .gitignore)만 포함하는 것이 좋습니다. 그렇지 않으면 리포지토리의 기존 파일이 Azure Databricks 작업 영역에 불필요하게 동기화될 수 있습니다.
2단계: 프로젝트에 Notebook 추가
이 단계에서는 프로젝트에 두 Notebook을 추가합니다. 첫 번째 노트북은 2007년 이후 뉴욕 주 보건부의 공개 데이터 원본에서 인기 있는 아기 이름 목록을 가져옵니다.
부서의 웹 사이트에서 아기 이름: 이름별 추세: 2007년부터 참조하세요. 첫 번째 Notebook은 그런 다음 my-volume라는 카탈로그 속 default라는 스키마의 main라는 Azure Databricks Unity 카탈로그 볼륨에 이 데이터를 저장합니다. 두 번째 Notebook은 저장된 데이터를 쿼리하고 2014년 이름과 성별별로 아기 이름의 집계된 수를 표시합니다.
디렉터리의 루트에서 첫 번째 Notebook,라는
retrieve-baby-names.py파일을 만듭니다.retrieve-baby-names.py파일에 다음 코드를 추가합니다.# Databricks notebook source import requests response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv') csvfile = response.content.decode('utf-8') dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)같은 디렉터리에
filter-baby-names.py라는 파일인 두 번째 Notebook을 만듭니다.filter-baby-names.py파일에 다음 코드를 추가합니다.# Databricks notebook source babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv") babynames.createOrReplaceTempView("babynames_table") years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist() years.sort() dbutils.widgets.dropdown("year", "2014", [str(x) for x in years]) display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
3단계: 프로젝트에 번들 구성 스키마 파일 추가
YAML 파일 및 JSON 스키마 파일을 지원하는 Visual Studio Code, PyCharm Professional 또는 IntelliJ IDEA Ultimate와 같은 IDE를 사용하는 경우 IDE를 사용하여 번들 구성 스키마 파일을 만들 뿐만 아니라 프로젝트의 번들 구성 파일 구문 및 서식을 확인할 수 있습니다.
비주얼 스튜디오 코드
예를 들어 Visual Studio Code 마켓플레이스에서 YAML 확장을 설치하여 VISUAL Studio Code에 YAML 언어 서버 지원을 추가합니다.
Databricks CLI를 사용함으로써 Databricks 자산 번들 구성 JSON 스키마 파일을 생성하여
bundle schema명령을 실행하고 출력을 JSON 파일로 리디렉션합니다. 예를 들어 다음과 같이 현재 디렉터리 안에bundle_config_schema.json이라는 이름으로 파일을 생성합니다.databricks bundle schema > bundle_config_schema.json4단계에서는 번들 구성 파일의 시작 부분에 다음 주석을 추가하여 번들 구성 파일을 지정된 JSON 스키마 파일과 연결합니다.
# yaml-language-server: $schema=bundle_config_schema.json참고
앞의 설명에서 Databricks 자산 번들 구성 JSON 스키마 파일이 다른 경로에 있는 경우
bundle_config_schema.json을 스키마 파일의 전체 경로로 바꿉니다.
PyCharm Professional
Databricks CLI를 사용함으로써 Databricks 자산 번들 구성 JSON 스키마 파일을 생성하여
bundle schema명령을 실행하고 출력을 JSON 파일로 리디렉션합니다. 예를 들어 다음과 같이 현재 디렉터리 안에bundle_config_schema.json이라는 이름으로 파일을 생성합니다.databricks bundle schema > bundle_config_schema.json번들 구성 JSON 스키마 파일을 인식하도록 PyCharm을 구성한 다음 사용자 지정 JSON 스키마 구성의 지침에 따라 JSON 스키마 매핑을 완료합니다.
4단계에서는 PyCharm을 사용하여 번들 구성 파일을 만들거나 엽니다. 규칙에 따라 이 파일의 이름은
databricks.yml입니다.
IntelliJ IDEA 궁극 버전
Databricks CLI를 사용함으로써 Databricks 자산 번들 구성 JSON 스키마 파일을 생성하여
bundle schema명령을 실행하고 출력을 JSON 파일로 리디렉션합니다. 예를 들어 다음과 같이 현재 디렉터리 안에bundle_config_schema.json이라는 이름으로 파일을 생성합니다.databricks bundle schema > bundle_config_schema.json번들 구성 JSON 스키마 파일을 인식하도록 IntelliJ IDEA를 구성한 다음 사용자 지정 JSON 스키마 구성의 지침에 따라 JSON 스키마 매핑을 완료합니다.
4단계에서는 IntelliJ IDEA를 사용하여 번들 구성 파일을 만들거나 엽니다. 규칙에 따라 이 파일의 이름은
databricks.yml입니다.
4단계: 프로젝트에 번들 구성 파일 추가
이 단계에서는 두 Notebook을 배포하고 실행하는 방법을 정의합니다. 이 데모에서는 Azure Databricks 작업을 사용하여 첫 번째 Notebook과 두 번째 Notebook을 실행하려고 합니다. 첫 번째 Notebook은 데이터를 저장하고 두 번째 Notebook은 저장된 데이터를 쿼리하므로 두 번째 Notebook이 시작되기 전에 첫 번째 Notebook 실행을 완료하려고 합니다. 프로젝트의 번들 구성 파일에서 이 목표를 모델링합니다.
- 디렉터리의 루트에서 번들 구성 파일인 이름이 인
databricks.yml파일을 만듭니다. - 다음 코드를
databricks.yml파일에 추가하여<workspace-url>를 작업 영역 당 URL, 예를 들면https://adb-1234567890123456.7.azuredatabricks.net로 대체합니다. 이 URL은.databrickscfg파일의 URL과 일치해야 합니다.
팁
# yaml-language-server로 시작하는 첫 번째 줄은 IDE에서 지원하는 경우에만 필요합니다. 자세한 내용은 이전 3단계를 참조하세요.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: baby-names
resources:
jobs:
retrieve-filter-baby-names-job:
name: retrieve-filter-baby-names-job
job_clusters:
- job_cluster_key: common-cluster
new_cluster:
spark_version: 12.2.x-scala2.12
node_type_id: Standard_DS3_v2
num_workers: 1
tasks:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./retrieve-baby-names.py
- task_key: filter-baby-names-task
depends_on:
- task_key: retrieve-baby-names-task
job_cluster_key: common-cluster
notebook_task:
notebook_path: ./filter-baby-names.py
targets:
development:
workspace:
host: <workspace-url>
작업을 사용자 지정하기 위해 작업 선언의 매핑은 REST API 참조에서 POST /api/2.1/jobs/create에 설명된 대로 작업 만들기 작업의 YAML 형식으로 표현된 요청 페이로드에 해당합니다.
팁
새 작업 클러스터의 설정은 대상 설정으로 재정의에 설명된 기술을 사용하여 정의, 결합 및 재정의할 수 있습니다.
5단계: 프로젝트의 번들 구성 파일 유효성 검사
이 단계에서는 번들 구성이 유효한지 확인합니다.
Databricks CLI를 사용하여
bundle validate명령을 다음과 같이 실행합니다.databricks bundle validate번들 구성 요약이 반환되면 유효성 검사가 성공했습니다. 오류가 반환되면 오류를 수정한 다음 이 단계를 반복합니다.
이 단계 후에 번들을 변경한 경우 이 단계를 반복하여 번들 구성이 여전히 유효한지 확인해야 합니다.
6단계: 원격 작업 영역에 로컬 프로젝트 배포
이 단계에서는 원격 Azure Databricks 작업 영역에 두 개의 로컬 Notebook을 배포하고 작업 영역에서 Azure Databricks 작업을 만듭니다.
Databricks CLI를 사용하여
bundle deploy명령을 다음과 같이 실행합니다.databricks bundle deploy -t development두 개의 로컬 노트북이 배포되었는지 확인합니다. Azure Databricks 작업 영역의 사이드바에서 작업 영역을 클릭합니다.
Users >
<your-username>> .bundle > baby-names > development > files 폴더를 클릭합니다. 두 Notebooks가 이 폴더에 있어야 합니다.작업이 만들어졌는지 확인합니다. Azure Databricks 작업 영역의 사이드바에서 작업 및 파이프라인을 클릭합니다.
필요에 따라 작업 필터와 내 소유 필터를 선택합니다.
retrieve-filter-baby-names-job을 클릭합니다.
작업 탭을 클릭합니다. retrieve-baby-names-task와 filter-baby-names-task라는 두 가지 작업이 있어야 합니다.
이 단계 후에 번들을 변경한 경우 6-7단계를 반복하여 번들 구성이 여전히 유효한지 확인한 다음 프로젝트를 다시 배포해야 합니다.
7단계: 배포된 프로젝트 실행
이 단계에서는 작업 영역에서 Azure Databricks 작업을 실행합니다.
Databricks CLI를 사용하여
bundle run명령을 다음과 같이 실행합니다.databricks bundle run -t development retrieve-filter-baby-names-job터미널에 표시되는
Run URL의 값을 복사하고 이 값을 웹 브라우저에 붙여넣어 Azure Databricks 작업 영역을 엽니다.Azure Databricks 작업 영역에서 두 작업이 성공적으로 완료되고 녹색 제목 표시줄이 표시되면 filter-baby-names-task 작업을 클릭하여 쿼리 결과를 확인합니다.
이 단계 후에 번들을 변경한 경우 6-8단계를 반복하여 번들 구성이 여전히 유효한지 확인하고, 프로젝트를 다시 배포하고, 재배포된 프로젝트를 실행해야 합니다.
8단계: 정리
이 단계에서는 배포된 두 개의 Notebook과 작업을 작업 영역에서 삭제합니다.
Databricks CLI를 사용하여
bundle destroy명령을 다음과 같이 실행합니다.databricks bundle destroy작업 삭제 요청 확인: 리소스를 영구적으로 삭제하라는 메시지가 표시되면
y을 입력하고Enter을 누릅니다.Notebook 삭제 요청 확인: 이전에 배포된 폴더와 모든 파일을 영구적으로 삭제하라는 메시지가 표시되면
y을 입력하고Enter을 누릅니다.
bundle destroy 명령을 실행하면 배포된 작업과 배포된 두 Notebook이 포함된 폴더만 삭제됩니다. 이 명령은 첫 번째 Notebook에서 만든 babynames.csv 파일과 같은 부작용을 삭제하지 않습니다.
babybnames.csv 파일을 삭제하려면 다음을 수행합니다.
- Azure Databricks 작업 영역의 사이드바에서 카탈로그
를 클릭합니다. - DBFS 찾아보기를 클릭합니다.
- FileStore 폴더를 클릭합니다.
- babynames.csv 옆의 드롭다운 화살표를 클릭하고 삭제를 클릭합니다.
- 개발 머신에서 번들을 삭제하려는 경우 이제 1단계에서 로컬 디렉터리를 삭제할 수 있습니다.