Python 및 R 모듈 작업

이 문서에서는 상대 경로를 사용하여 Databricks Notebook과 함께 작업 영역 파일에 저장된 사용자 지정 Python 및 R 모듈을 가져오는 방법을 설명합니다. 작업 영역 파일은 더 엄격한 개발 수명 주기를 용이하게 하여 코드를 모듈화하고, %run 명령을 import 문으로 변환하고 , Python 휠 파일을 공동 버전 모듈로 리팩터링할 수 있습니다. 기본 제공 Databricks 웹 터미널을 사용하여 코드를 테스트할 수도 있습니다.

참고 항목

Databricks Runtime 14.0 이상에서 로컬로 실행되는 코드의 기본 CWD(현재 작업 디렉터리)는 실행 중인 Notebook 또는 스크립트가 포함된 디렉터리입니다. 이는 Databricks Runtime 13.3 LTS 이하의 동작 변경입니다. 기본 현재 작업 디렉터리가란?을 참조하세요.

Python 및 R 모듈 가져오기

Important

Databricks Runtime 13.3 LTS 이상에서는 Python에 추가된 디렉터리 또는 Python sys.path패키지구성된 디렉터리에서 클러스터의 모든 실행기에 자동으로 배포됩니다. Databricks Runtime 12.2 LTS 이하에서 추가 sys.path 된 라이브러리는 실행기에 명시적으로 설치되어야 합니다.

Databricks Runtime 11.3 LTS 이상에서는 Notebook의 현재 작업 디렉터리가 Python 경로에 자동으로 추가됩니다. Git 폴더를 사용하는 경우 루트 리포지토리 디렉터리가 추가됩니다.

다른 디렉터리에서 모듈을 가져오려면 모듈 sys.path이 포함된 디렉터리를 에 추가해야 합니다. 다음 예제와 같이 상대 경로를 사용하여 디렉터리를 지정할 수 있습니다.

import sys
import os
sys.path.append(os.path.abspath('..'))

클러스터 라이브러리 또는 Notebook 범위 라이브러리로 저장된 모듈에서와 마찬가지로 작업 영역 파일에 저장된 모듈에서 함수를 가져옵니다.

Python

from sample import power
power.powerOfTwo(3)

R

source("sample.R")
power.powerOfTwo(3)

Important

문을 사용하는 import 경우 동일한 이름의 여러 라이브러리가 있는 경우 Databricks는 설정된 우선 순위를 따릅니다. Python 라이브러리 우선 순위를 참조 하세요.

Python 모듈에 대한 자동 로드

Python 코드를 개발하는 동안 여러 파일을 편집하는 경우 Notebook 셀 또는 Python 파일에서 다음 명령을 사용하여 모든 모듈을 강제로 다시 로드할 수 있습니다.

%load_ext autoreload
%autoreload 2

자동 로드는 드라이버에서만 작동하며 UDF의 실행기에 코드를 다시 로드하지 않습니다.

코드 리팩터링

코드 개발의 모범 사례는 간편하게 다시 사용할 수 있도록 코드를 모듈화하는 것입니다. 작업 영역 파일을 사용하여 사용자 지정 Python 파일을 만들고 해당 파일의 코드를 문을 사용하여 import Notebook에서 사용할 수 있도록 할 수 있습니다.

Notebook 코드를 다시 사용 가능한 파일로 리팩터링하려면:

  1. 코드에 대한 새 소스 코드 파일을 만듭니다.
  2. Notebook에 Python 가져오기 문을 추가하여 새 파일의 코드를 Notebook에서 사용할 수 있도록 합니다.

%run 명령에서 마이그레이션

명령을 사용하여 %run Notebook에 정의된 Python 또는 R 함수를 다른 Notebook에서 사용할 수 있도록 하거나 클러스터에 사용자 지정 .whl 파일을 설치하는 경우 해당 사용자 지정 모듈을 작업 영역 파일로 포함하는 것이 좋습니다. 이러한 방식으로 Notebook 및 기타 코드 모듈을 동기화 상태로 유지하여 Notebook이 항상 올바른 버전을 사용할 수 있도록 할 수 있습니다.

%run명령을 사용하면 하나의 Notebook을 다른 Notebook에 포함할 수 있으며, 종종 Notebook에서 지원 Python 또는 R 코드를 사용할 수 있도록 하는 데 사용됩니다. 이 예에서 이름이 power.py인 Notebook에는 아래 코드가 포함되어 있습니다.

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

그런 다음 %run 명령을 사용하여 power.py에 정의된 함수를 다른 Notebook에서 사용할 수 있도록 할 수 있습니다.

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

작업 영역 파일을 사용하여 Python 코드가 포함된 모듈을 직접 가져와 함수를 실행할 수 있습니다.

from power import n_to_mth
n_to_mth(3, 4)

Python .whl 파일을 상대 라이브러리로 리팩터링

사용자 지정 .whl 파일을 클러스터에 설치한 다음 해당 클러스터에 연결된 Notebook으로 가져올 수 있습니다. 자주 업데이트되는 코드의 경우 이 프로세스는 번거롭고 오류가 발생하기 쉬울 수 있습니다. 작업 영역 파일을 사용하면 코드를 사용하는 Notebook과 동일한 디렉터리에 이러한 Python 파일을 보관하여 Notebook에서 항상 올바른 버전을 사용하도록 할 수 있습니다.

Python 프로젝트 패키징에 대한 자세한 내용은 이 자습서를 참조하세요.

테스트에 Azure Databricks 웹 터미널 사용

Azure Databricks 웹 터미널을 사용하여 파일을 Notebook으로 가져오고 Notebook을 실행하지 않고도 Python 또는 R 코드 수정을 테스트할 수 있습니다.

  1. 웹 터미널을 엽니다.
  2. 디렉터리로 변경: cd /Workspace/Users/<path-to-directory>/.
  3. Python 또는 R 파일(python file_name.py 또는 Rscript file_name.r)을 실행합니다.