기본 현재 작업 디렉터리가란?
이 문서에서는 Notebook 및 파일 실행에 대해 기본 CWD(현재 작업 디렉터리)가 작동하는 방식을 설명합니다.
참고 항목
Databricks Runtime 14.0 이상 및 기본 작업 영역 구성을 사용하여 작업 영역 전체에서 CWD(일관성) 동작을 더 많이 수행합니다.
Notebook 및 파일에서 로컬로 실행되는 코드에 대한 두 가지 기본 CWD 동작이 있습니다.
- CWD는 실행 중인 Notebook 또는 스크립트가 포함된 디렉터리를 반환합니다.
- CWD는 드라이버에 연결된 임시 스토리지 볼륨을 나타내는 디렉터리를 반환합니다.
이 CWD 동작은 Apache Spark를 사용하지 않는 Python 또는 R 코드를 비롯한 %sh
모든 코드에 영향을 줍니다. 동작은 코드 언어, Databricks 런타임 버전, 작업 영역 경로 및 작업 영역 관리자 구성에 따라 결정됩니다.
Scala 코드의 경우 CWD는 드라이버에 연결된 임시 스토리지입니다.
다른 모든 언어의 코드:
- Databricks Runtime 14.0 이상에서 CWD는 실행 중인 Notebook 또는 스크립트를 포함하는 디렉터리입니다. 코드가 에 있는지 여부에 관계없이 마찬가지입니다
/Workspace/Repos
. - Databricks Runtime 13.3 LTS 이하를 실행하는 Notebook의 경우 CWD는 코드가 다음 위치에
/Workspace/Repos
있는지 여부에 따라 달라집니다. - 외부 경로에서 실행되는 코드의
/Workspace/Repos
경우 CWD는 드라이버에 연결된 임시 스토리지 볼륨입니다. - 경로에서
/Workspace/Repos
실행되는 코드의 경우 CWD는 관리자 구성 설정 및 클러스터 DBR 버전에 따라 달라집니다.- DBR 버전 8.4 이상으로 설정되거나
true
설정된dbr8.4+
작업 영역enableWorkspaceFilesystem
의 경우 CWD는 실행 중인 Notebook 또는 스크립트가 포함된 디렉터리입니다. 8.4 미만의 DBR 버전에서는 드라이버에 연결된 임시 스토리지 볼륨입니다. - DBR 버전 11.0 이상으로 설정된
dbr11.0+
작업 영역enableWorkspaceFilesystem
의 경우 CWD는 실행 중인 Notebook 또는 스크립트를 포함하는 디렉터리입니다. 11.0 미만의 DBR 버전에서는 드라이버에 연결된 임시 스토리지 볼륨입니다. - 설정된
false
작업 영역enableWorkspaceFilesystem
의 경우 CWD는 드라이버에 연결된 임시 스토리지 볼륨입니다.
- DBR 버전 8.4 이상으로 설정되거나
코드에서 CWD 가져오기
파이프라인 Notebook에 대한 작업 영역 CWD를 얻으려면 .를 호출 os.getcwd()
합니다. 를 사용하여 Notebook의 시작 부분에서 모듈(기본 Python 파일 시스템 상호 작용 모듈)을 import os
가져와 os
야 합니다. 예시:
import os
...
cwd = os.getcwd()
파이프라인 Notebook의 시작 부분에서 호출 os.chdir('/path/to/dir')
하여 CWD를 설정할 수도 있습니다. WSFS를 사용하도록 설정된 작업 영역에서 Notebook을 실행하는 경우에만 CWD를 설정할 수 있습니다.
워크로드에 어떤 영향을 주나요?
워크로드에 가장 큰 영향은 파일 지원 및 위치와 관련이 있습니다.
- Databricks Runtime 13.3 LTS 이하에서 외부 경로에서 실행되는 코드의
/Workspace/Repos
경우 많은 코드 조각은 클러스터가 종료될 때 영구적으로 삭제되는 임시 스토리지 볼륨의 기본 위치에 데이터를 저장합니다. - Databricks Runtime 14.0 이상에서 이러한 작업의 기본 동작은 명시적으로 삭제될 때까지 지속되는 실행 중인 Notebook과 함께 저장된 작업 영역 파일을 만듭니다.
작업 영역 파일에 내재된 성능 차이 및 기타 제한 사항에 대한 자세한 내용은 작업 영역 파일 작업을 참조하세요.
레거시 동작으로 되돌리기
Python 메서드 os.chdir()
를 사용하여 모든 Notebook의 현재 작업 디렉터리를 변경할 수 있습니다. 각 Notebook이 드라이버에 연결된 임시 스토리지 볼륨에서 CWD를 사용하는지 확인하려면 각 Notebook의 첫 번째 셀에 다음 명령을 추가하고 다른 코드보다 먼저 실행할 수 있습니다.
import os
os.chdir("/tmp")