다음을 통해 공유


Databricks Notebook에서 코드 개발

이 페이지에서는 Python 및 SQL의 자동 완성, 자동 서식 지정, Notebook에서 Python 및 SQL 결합, Notebook 버전 기록 추적 등 Databricks Notebook에서 코드를 개발하는 방법을 설명합니다.

자동 완성, 변수 선택, 다중 커서 지원 및 병렬 차이와 같은 편집기에서 사용할 수 있는 고급 기능에 대한 자세한 내용은 Databricks Notebook 및 파일 편집기 사용을 참조하세요.

Notebook 또는 파일 편집기를 사용하는 경우 Databricks Assistant를 사용하여 코드를 생성, 설명 및 디버그할 수 있습니다. 자세한 내용은 Databricks 도우미 사용을 참조하세요.

Databricks Notebook에는 Python Notebook용 기본 제공 대화형 디버거도 포함되어 있습니다. Notebook 디버깅을 참조하세요.

Databricks 도우미에서 코딩 도움말 보기

Databricks Assistant는 대화형 인터페이스를 사용하여 상호 작용할 수 있는 컨텍스트 인식 AI 도우미로, Databricks 내에서 생산성을 높일 수 있습니다. 작업을 영어로 설명하고 도우미가 Python 코드 또는 SQL 쿼리를 생성하고 복잡한 코드를 설명하고 오류를 자동으로 수정하도록 할 수 있습니다. 도우미는 Unity 카탈로그 메타데이터를 사용하여 회사 전체에서 테이블, 열, 설명 및 인기 있는 데이터 자산을 이해하여 개인 설정된 응답을 제공합니다.

Databricks 도우미는 다음 작업에 도움이 될 수 있습니다.

  • 코드를 생성합니다.
  • 오류에 대한 수정 사항을 식별하고 제안하는 것을 포함하여 코드를 디버그합니다.
  • 코드를 변환 및 최적화합니다.
  • 코드를 설명합니다.
  • Azure Databricks 설명서에서 관련 정보를 찾는 데 도움이 됩니다.

Databricks Assistant를 사용하여 보다 효율적으로 코딩하는 방법에 대한 자세한 내용은 Databricks 도우미 사용을 참조하세요. Databricks 도우미에 대한 일반적인 정보는 DatabricksIQ 기반 기능을 참조하세요.

편집을 위해 Notebook에 액세스

Notebook을 열려면 작업 영역 검색 함수를 사용하거나 작업 영역 브라우저를 사용하여 Notebook으로 이동하고 Notebook의 이름 또는 아이콘을 클릭합니다.

데이터 찾아보기

스키마 브라우저를 사용하여 Notebook에 사용할 수 있는 Unity 카탈로그 개체를 탐색합니다. Notebook의 왼쪽에 있는 Notebook 데이터 아이콘을 클릭하여 스키마 브라우저를 엽니다.

사용자에 해당 버튼은 현재 세션에서 사용했거나 이전에 즐겨찾기로 표시된 개체만 표시합니다.

필터 상자에 텍스트를 입력하면 입력한 텍스트가 포함된 개체만 표시되도록 표시가 변경됩니다. 현재 열려 있거나 현재 세션에서 열려 있는 개체만 나타납니다. 필터 상자는 Notebook에 사용할 수 있는 카탈로그, 스키마, 테이블 및 볼륨을 완전히 검색하지 않습니다.

케밥 메뉴 케밥 메뉴를 열려면 다음과 같이 개체 이름 위에 커서를 놓습니다.

스키마 브라우저의 kebab 메뉴

개체가 테이블인 경우 다음을 수행할 수 있습니다.

  • 셀을 자동으로 만들고 실행하여 표에 있는 데이터의 미리 보기를 표시합니다. 표의 케밥 메뉴에서 새 셀에서 미리 보기를 선택합니다.
  • 카탈로그 탐색기에서 카탈로그, 스키마 또는 테이블을 봅니다. 케밥 메뉴에서 카탈로그 탐색기에서 열기를 선택합니다. 선택한 개체를 보여 주는 새 탭이 열립니다.
  • 카탈로그, 스키마 또는 테이블에 대한 경로를 가져옵니다. 개체에 대한 케밥 메뉴에서 ... 경로 복사를 선택합니다.
  • 즐겨찾기에서 테이블을 추가합니다. 테이블의 케밥 메뉴에서 즐겨찾기에 추가를 선택합니다.

개체가 카탈로그, 스키마 또는 볼륨인 경우 개체의 경로를 복사하거나 카탈로그 탐색기에서 열 수 있습니다.

셀에 직접 테이블 또는 열 이름을 삽입하려면 다음을 수행합니다.

  1. 이름을 입력할 위치에 있는 셀에서 커서를 클릭합니다.
  2. 스키마 브라우저에서 테이블 이름 또는 열 이름 위로 커서를 이동합니다.
  3. 개체 이름 오른쪽에 표시되는 이중 화살표(이중 화살표)를 클릭합니다.

바로 가기 키

바로 가기 키를 표시하려면 도움말 > 바로 가기 키를 선택합니다. 사용할 수 있는 바로 가기 키는 커서가 코드 셀(편집 모드)에 있는지, 아닌지(명령 모드)에 따라 달라집니다.

명령 팔레트

명령 팔레트를 사용하여 Notebook에서 작업을 신속하게 수행할 수 있습니다. 전자 필기장 작업 패널을 열려면 작업 영역의 오른쪽 아래 모서리에 있는 _을 클릭하거나 MacOS에서 Cmd + Shift + P 바로 가기를 사용하거나 Windows에서 Ctrl + Shift + P를 사용합니다.

명령 팔레트

텍스트 찾기 및 바꾸기

Notebook 내에서 텍스트를 찾고 바꾸려면 편집 > 찾기 및 바꾸기를 선택합니다. 현재 일치 항목은 주황색으로 강조 표시되고 다른 모든 일치 항목은 노란색으로 강조 표시됩니다.

현재 일치 항목을 바꾸려면 바꾸기를 클릭합니다. Notebook의 모든 일치 항목을 바꾸려면 모두 바꾸기를 클릭합니다.

일치 항목 간에 이동하려면 이전다음 단추를 클릭합니다. Shift+Enter를 누르고 이전 일치 항목으로 이동하거나 Enter 키를 눌러 다음 일치 항목으로 이동할 수도 있습니다.

찾기 및 바꾸기 도구를 닫으려면 아이콘 삭제을 클릭하거나 Esc 키를 누릅니다.

선택한 셀 실행

단일 셀 또는 셀 컬렉션을 실행할 수 있습니다. 단일 셀을 선택하려면 셀의 아무 곳이나 클릭합니다. 여러 셀을 선택하려면 스크린샷과 같이, MacOS에서 Command 키 또는 Windows에서 Ctrl 키를 누른 상태로 텍스트 영역 외부의 셀을 클릭합니다.

여러 셀을 선택하는 방법

선택한 명령을 실행하려면 이 명령의 동작은 Notebook이 연결된 클러스터에 따라 달라집니다.

  • Databricks Runtime 13.3 LTS 이하를 실행하는 클러스터에서 선택한 셀은 개별적으로 실행됩니다. 셀에서 오류가 발생하면 후속 셀을 계속 실행합니다.
  • Databricks Runtime 14.0 이상을 실행하는 클러스터 또는 SQL 웨어하우스에서 선택한 셀이 일괄 처리로 실행됩니다. 오류가 발생하면 실행이 중지되며 개별 셀의 실행을 취소할 수 없습니다. 인터럽트 버튼을 사용하여 모든 셀의 실행을 중지할 수 있습니다.

코드 모듈화

Important

이 기능은 공개 미리 보기 상태입니다.

Databricks Runtime 11.3 LTS 이상을 사용하면 Azure Databricks 작업 영역에서 소스 코드 파일을 만들고 관리한 다음 필요에 따라 이러한 파일을 Notebook으로 가져올 수 있습니다.

소스 코드 파일 작업에 대한 자세한 내용은 Databricks Notebook 간에 코드 공유Python 및 R 모듈 작업을 참조하세요.

선택한 텍스트 실행

Notebook 셀에서 코드 또는 SQL 문을 강조 표시하고 해당 선택 영역만 실행할 수 있습니다. 이 기능은 코드 및 쿼리를 빠르게 반복하려는 경우에 유용합니다.

  1. 실행하려는 줄을 강조 표시합니다.

  2. 실행 > 선택한 텍스트 실행을 선택하거나 바로 가기 키 Ctrl+Shift+Enter를 사용합니다. 강조 표시된 텍스트가 없으면 선택한 텍스트 실행이 현재 줄을 실행합니다.

    선택한 줄 실행

셀에서 혼합 언어를 사용하는 경우 선택 영역에 %<language> 줄을 포함해야 합니다.

선택한 텍스트 실행은 강조 표시된 선택 영역에 있는 경우 축소된 코드도 실행합니다.

%run, %pip%sh 같은 특수 셀 명령이 지원됩니다.

여러 출력 탭이 있는 셀(즉, 데이터 프로필 또는 시각화를 정의한 셀)에는 선택한 텍스트 실행을 사용할 수 없습니다.

코드 셀 서식 지정

Azure Databricks는 Notebook 셀에서 Python 및 SQL 코드의 서식을 쉽고 빠르게 지정할 수 있는 도구를 제공합니다. 이러한 도구는 코드의 서식을 유지하는 데 필요한 노력을 줄여 주며 여러 Notebook에서 동일한 코딩 표준을 적용해 줍니다.

Python 검정 포맷터 라이브러리

Important

이 기능은 공개 미리 보기 상태입니다.

Azure Databricks는 Notebook 내에서 Black을 사용하여 Python 코드 서식 지정을 지원합니다. Notebook은 blacktokenize-rt Python 패키지가 설치된 클러스터에 연결해야 합니다.

Databricks Runtime 11.3 LTS 이상에서 Azure Databricks는 blacktokenize-rt를 사전 설치합니다. 이러한 라이브러리를 설치하지 않고도 포맷터를 직접 사용할 수 있습니다.

Databricks Runtime 10.4 LTS 이하에서 Python 포맷터를 사용하려면 Notebook 또는 클러스터에 PyPI의 black==22.3.0tokenize-rt==4.2.1을 설치해야 합니다. Notebook에서 다음 명령을 실행할 수 있습니다.

%pip install black==22.3.0 tokenize-rt==4.2.1

또는 클러스터에 라이브러리를 설치할 수 있습니다.

라이브러리 설치에 대한 자세한 내용은 Python 환경 관리를 참조하세요.

Databricks Git 폴더의 파일 및 Notebook의 경우 pyproject.toml 파일에 따라 Python 포맷터를 구성할 수 있습니다. 이 기능을 사용하려면 Git 폴더 루트 디렉터리에 pyproject.toml 파일을 만들고 Black 구성 형식에 따라 구성합니다. 파일에서 [tool.black] 섹션을 편집합니다. 이 구성은 해당 Git 폴더의 파일 및 Notebook 서식을 지정할 때 적용됩니다.

Python 및 SQL 셀의 서식을 지정하는 방법

코드 서식을 지정하려면 Notebook에 대해 편집 가능 권한이 있어야 합니다.

Azure Databricks는 Gethue/sql-formatter 라이브러리를 사용하여 SQL과 PYTHON용 black 코드 포맷터를 포맷합니다.

서식 지정 도구는 다음과 같은 방법으로 트리거할 수 있습니다.

  • 단일 셀 서식 지정

    • 바로 가기 키: Cmd+Shift+F를 누릅니다.
    • 명령 바로 가기 메뉴:
      • SQL 셀 서식 지정: SQL 셀의 명령 바로 가기 드롭다운 메뉴에서 SQL 서식 지정을 선택합니다. 이 메뉴 항목은 SQL Notebook 셀 또는 %sql 언어 매직이 있는 셀에서만 볼 수 있습니다.
      • Python 셀 서식 지정: Python 셀의 명령 컨텍스트 드롭다운 메뉴에서 Python 서식 지정을 선택합니다. 이 메뉴 항목은 Python Notebook 셀 또는 %python 언어 매직이 있는 셀에서만 볼 수 있습니다.
    • Notebook 편집 메뉴: Python 또는 SQL 셀을 선택한 다음, 편집 > 셀 서식 지정을 선택합니다.
  • 여러 셀 서식 지정

    여러 셀을 선택한 후 > 형식 편집을 선택합니다. 둘 이상의 언어로 된 셀을 선택한 경우 SQL 및 Python 셀의 서식만 지정됩니다. 여기에는 %sql%python을 사용하는 셀도 포함됩니다.

  • Notebook에서 모든 Python 및 SQL 셀의 서식 지정

    편집 > Notebook 서식 지정을 선택합니다. Notebook에 둘 이상의 언어가 포함된 경우 SQL 및 Python 셀의 서식만 지정됩니다. 여기에는 %sql%python을 사용하는 셀도 포함됩니다.

코드 서식 지정의 제한 사항

  • Black은 4칸 들여쓰기를 위해 PEP 8 표준을 적용합니다. 들여쓰기를 구성할 수는 없습니다.
  • SQL UDF 내에 포함된 Python 문자열의 서식 지정은 지원되지 않습니다. 마찬가지로, Python UDF 내에서 SQL 문자열의 서식 지정은 지원되지 않습니다.

버전 기록

Azure Databricks Notebook은 Notebook 버전 기록을 유지 관리하므로 Notebook의 이전 스냅샷을 보고 복원할 수 있습니다. 버전에 대해 주석 추가, 버전 복원 및 삭제, 버전 기록 지우기와 같은 작업을 수행할 수 있습니다.

Databricks의 작업을 원격 Git 리포지토리와 동기화할 수도 있습니다.

Notebook 버전에 액세스하려면 오른쪽 사이드바에서 버전 기록 아이콘을 클릭합니다. Notebook 버전 기록이 나타납니다. 파일 > 버전 기록을 선택할 수도 있습니다.

주석 추가

최신 버전에 주석을 추가하려면 다음을 수행합니다.

  1. 버전을 클릭합니다.

  2. 지금 저장을 클릭합니다.

    주석 저장

  3. Notebook 버전 저장 대화 상자에서 설명을 입력합니다.

  4. 저장을 클릭합니다. Notebook 버전이 입력한 주석과 함께 저장됩니다.

버전 복원

버전을 복원하려면 다음을 수행합니다.

  1. 버전을 클릭합니다.

  2. 이 버전 복원을 클릭합니다.

    버전 복원

  3. 확인을 클릭합니다. 선택한 버전이 Notebook의 최신 버전이 됩니다.

버전 삭제

버전 항목을 삭제하려면 다음을 수행합니다.

  1. 버전을 클릭합니다.

  2. 휴지통 아이콘(휴지통)을 클릭합니다.

    버전 삭제

  3. 예, 지우겠습니다를 클릭합니다. 선택한 버전이 기록에서 삭제됩니다.

버전 기록 지우기

버전 기록을 지운 후에는 복구할 수 없습니다.

Notebook의 버전 기록을 지우려면 다음을 수행합니다.

  1. 파일 > 버전 기록 지우기를 선택합니다.
  2. 예, 지우겠습니다를 클릭합니다. Notebook 버전 기록이 지워집니다.

Notebook의 코드 언어

기본 언어 설정

Notebook의 기본 언어는 Notebook 이름 옆에 표시됩니다.

Notebook 기본 언어

기본 언어를 변경하려면 언어 단추를 클릭하고 드롭다운 메뉴에서 새 언어를 선택합니다. 기존 명령이 계속 작동하도록 하기 위해, 이전 기본 언어의 명령에 자동으로 언어 매직 명령 접두사가 추가됩니다.

언어 혼합

기본적으로 셀은 Notebook의 기본 언어를 사용합니다. 언어 단추를 클릭하고 드롭다운 메뉴에서 언어를 선택하여 셀의 기본 언어를 재정의할 수 있습니다.

셀 언어 드롭다운

또는 셀 시작 부분에서 언어 매직 명령 %<language>를 사용할 수 있습니다. 지원되는 매직 명령은 %python, %r, %scala, %sql입니다.

참고 항목

언어 매직 명령을 호출하면 명령이 Notebook의 실행 컨텍스트에서 REPL로 전송됩니다. 하나의 언어로 정의된 변수(및 이에 따라 해당 언어의 REPL로 정의된 변수)는 다른 언어의 REPL에서 사용할 수 없습니다. REPL은 DBFS의 파일, 개체 스토리지의 개체와 같은 외부 리소스를 통해서만 상태를 공유할 수 있습니다.

Notebook은 다음과 같은 보조 매직 명령도 지원합니다.

  • %sh: Allows Notebook에서 셸 코드를 실행할 수 있습니다. 셸 명령에 0이 아닌 종료 상태가 있는 경우 셀이 실패하도록 하려면 -e 옵션을 추가합니다. 이 명령은 Apache Spark 드라이버에서만 실행되며, 작업자에서는 실행되지 않습니다. 모든 노드에서 셸 명령을 실행하려면 init 스크립트를 사용합니다.
  • %fs: dbutils 파일 시스템 명령을 사용할 수 있습니다. 예를 들어, dbutils.fs.ls 명령을 사용하여 파일을 나열하려면 대신 %fs ls를 지정할 수 있습니다. 자세한 내용은 Azure Databricks에서 파일로 작업을 참조하세요.
  • %md: 텍스트, 이미지, 수학 수식, 방정식을 포함하는 다양한 유형의 설명서를 포함할 수 있습니다. 다음 섹션을 확인하세요.

Python 명령에서 SQL 구문 강조 표시 및 자동 완성

구문 강조 표시 및 SQL 자동 완성spark.sql 명령과 같은 Python 명령 내에서 SQL을 사용할 때 사용할 수 있습니다.

Python을 사용하여 Python Notebook에서 SQL 셀 결과 살펴보기

SQL을 사용하여 데이터를 로드하고 Python을 사용하여 탐색할 수 있습니다. Databricks Python Notebook에서는 SQL 언어 셀의 테이블 결과가 자동으로 _sqldf 변수에 할당된 Python DataFrame으로 제공됩니다.

Databricks Runtime 13.3 LTS 이상에서는 IPython의 출력 캐싱 시스템을 사용하여 DataFrame 결과에 액세스할 수도 있습니다. 프롬프트 카운터는 셀 결과의 맨 아래에 표시되는 출력 메시지에 나타납니다. 표시된 예제에서는 결과를 Out[2]으로 참조합니다.

참고 항목

  • _sqldf 셀이 실행될 때마다 %sql 변수를 다시 할당할 수 있습니다. DataFrame 결과에 대한 참조가 손실되지 않도록 하려면 다음 %sql 셀을 실행하기 전에 새 변수 이름에 할당합니다.

    new_dataframe_name = _sqldf
    
  • 쿼리에서 매개 변수화에 위젯을 사용하는 경우 결과가 Python DataFrame으로 제공되지 않습니다.

  • 쿼리에서 CACHE TABLE 또는 UNCACHE TABLE 키워드를 사용하는 경우 결과가 Python DataFrame으로 제공되지 않습니다.

이 스크린샷은 예제를 보여줍니다.

sql 결과 데이터 프레임

병렬로 SQL 셀 실행

명령이 실행되고 Notebook이 대화형 클러스터에 연결된 동안 현재 명령과 동시에 SQL 셀을 실행할 수 있습니다. SQL 셀은 새로운 병렬 세션에서 실행됩니다.

셀을 병렬로 실행하려면 다음을 수행합니다.

  1. 셀을 실행합니다.

  2. 지금 실행을 클릭합니다. 셀이 즉시 실행됩니다.

    현재 실행 중인 셀과 병렬로 SQL 셀 실행

셀이 새 세션에서 실행되므로 임시 뷰, UDF 및 암시적 Python DataFrame(_sqldf)은 병렬로 실행되는 셀에 대해 지원되지 않습니다. 또한 기본 카탈로그 및 데이터베이스 이름은 병렬 실행 중에 사용됩니다. 코드가 다른 카탈로그 또는 데이터베이스의 테이블을 참조하는 경우 3개 수준 네임스페이스(catalog.schema.table)를 사용하여 테이블 이름을 지정해야 합니다.

SQL 웨어하우스에서 SQL 셀 실행

SQL 분석에 컴퓨팅 최적화 유형의 SQL 웨어하우스에 있는 Databricks Notebook에서, 서버리스 컴퓨팅에서 SQL 명령을 실행할 수 있습니다. SQL 웨어하우스에서 Notebook 사용을 참조하세요.

이미지 표시

Azure Databricks는 Markdown 셀에 이미지 표시를 지원합니다. 작업 영역, 볼륨 또는 FileStore에 저장된 이미지를 표시할 수 있습니다.

작업 영역에 저장된 이미지 표시

절대 경로 또는 상대 경로를 사용하여 작업 영역에 저장된 이미지를 표시할 수 있습니다. 작업 영역에 저장된 이미지를 표시하려면 다음 구문을 사용합니다.

%md
![my_test_image](/Workspace/absolute/path/to/image.png)

![my_test_image](./relative/path/to/image.png)

Markdown 셀에 이미지 포함

볼륨에 저장된 이미지 표시

절대 경로를 사용하여 볼륨에 저장된 이미지를 표시할 수 있습니다. 볼륨에 저장된 이미지를 표시하려면 다음 구문을 사용합니다.

%md
![my_test_image](/Volumes/absolute/path/to/image.png)

FileStore에 저장된 이미지 표시

FileStore에 저장된 이미지를 표시하려면 다음 구문을 사용합니다.

%md
![my_test_image](files/image.png)

예를 들어, FileStore에 Databricks 로고 이미지 파일이 저장되어 있다고 가정하겠습니다.

dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png

Markdown 셀에 다음 코드를 포함하면

Markdown 셀의 이미지

이미지가 다음과 같이 셀 내에서 렌더링됩니다.

렌더링된 이미지

이미지 끌어서 놓기

로컬 파일 시스템에서 Markdown 셀로 이미지를 끌어서 놓을 수 있습니다. 이미지는 현재 작업 영역 디렉터리에 업로드되고 셀에 표시됩니다.

Markdown 셀로 이미지 끌어서 놓기

수학 방정식 표시

Notebook은 수학 수식 및 방정식을 표시하는 KaTeX를 지원합니다. 예를 들면 다음과 같습니다.

%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)

\\(A{_i}{_j}=B{_i}{_j}\\)

$$c = \\pm\\sqrt{a^2 + b^2}$$

\\[A{_i}{_j}=B{_i}{_j}\\]

다음과 같이 렌더링합니다.

렌더링된 수식 1

%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)

where \\(\delta=(\beta - \mu_{t-1})\\)

다음과 같이 렌더링합니다.

렌더링된 수식 2

HTML 포함

displayHTML 함수를 사용하여 Notebook에 HTML을 포함할 수 있습니다. 이 작업을 수행하는 방법의 예는 Notebook의 HTML, D3 및 SVG를 참조하세요.

참고 항목

displayHTML iframe은 databricksusercontent.com 도메인에서 제공되고, iframe 샌드박스는 allow-same-origin 특성을 포함합니다. databricksusercontent.com은 브라우저에서 액세스할 수 있어야 합니다. 현재 회사 네트워크에서 차단된 경우 허용 목록에 추가해야 합니다.

Markdown 셀에서 상대 경로를 사용하여 다른 Notebook 또는 Markdown 셀에 연결할 수 있습니다. 앵커 태그의 href 특성을 $로 시작하고 Unix 파일 시스템의 패턴을 따르는 상대 경로로 지정합니다.

%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>