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 코드를 개발하는 동안 여러 파일을 편집하는 경우 명령이 실행되도록 확장에서 autoreload
가져온 모듈을 자동으로 다시 로드하도록 설정할 수 있습니다. 모든 Notebook 셀 또는 Python 파일에서 다음 명령을 사용하여 확장을 사용하도록 설정합니다 autoreload
.
%load_ext autoreload
%autoreload 2
확장은 autoreload
Spark 드라이버 프로세스에서만 작동하며 Spark 실행기 프로세스에 코드를 다시 로드하지 않습니다. Spark 실행기를 실행하는 노드가 아닌 Spark 드라이버 노드에서만 작동하므로 작업자 노드(예: UDF)에서 실행되는 모듈을 개발할 때는 사용하지 autoreload
않아야 합니다.
Databricks Runtime 16.0 이상에서 Databricks의 autoreload
확장은 다음 기능을 추가합니다.
- 함수 내부 수정을 위해 모듈의 대상 재로드를 지원합니다. 가능한 경우 모듈의 변경된 부분만 다시 로드하면 각 개체의 외부에 표시되는 인스턴스가 하나만 있으므로 더 안전하고 안정적입니다.
- 작업 영역 파일에서 Python 모듈을 가져올 때 Databricks는 모듈이 마지막 가져오기 이후 변경된 경우 사용을
autoreload
자동으로 제안합니다.
확장에 autoreload
대한 자세한 내용은 IPython 자동 로드 설명서를 참조 하세요.
코드 리팩터링
코드 개발의 모범 사례는 간편하게 다시 사용할 수 있도록 코드를 모듈화하는 것입니다. 작업 영역 파일을 사용하여 사용자 지정 Python 파일을 만들고 해당 파일의 코드를 문을 사용하여 import
Notebook에서 사용할 수 있도록 할 수 있습니다.
Notebook 코드를 다시 사용 가능한 파일로 리팩터링하려면:
- 코드에 대한 새 소스 코드 파일을 만듭니다.
- 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으로 가져올 수 있습니다. 그러나 이 프로세스는 자주 업데이트되는 코드에서 번거롭고 오류가 발생하기 쉬울 수 있습니다. 작업 영역 파일을 사용하면 이러한 Python 파일을 코드를 사용하는 Notebook과 동일한 디렉터리에 보관하여 Notebook에서 항상 올바른 버전을 사용하도록 할 수 있습니다.
Python 프로젝트 패키징에 대한 자세한 내용은 이 자습서를 참조하세요.
테스트에 Azure Databricks 웹 터미널 사용
Azure Databricks 웹 터미널을 사용하여 Notebook을 사용하여 파일을 가져오고 실행하지 않고 Python 또는 R 코드에 대한 수정 내용을 테스트할 수 있습니다.
- 웹 터미널을 엽니다.
- 디렉터리로 변경:
cd /Workspace/Users/<path-to-directory>/
. - Python 또는 R 파일(
python file_name.py
또는Rscript file_name.r
)을 실행합니다.