Что такое текущий рабочий каталог по умолчанию?
В этой статье описывается, как работает текущий рабочий каталог (CWD) по умолчанию для выполнения записных книжек и файлов.
Примечание.
Используйте databricks Runtime 14.0+ и конфигурации рабочих областей по умолчанию для повышения согласованности в поведении (CWD) в рабочей области.
Существует два поведения CWD по умолчанию для кода, выполняемого локально в записных книжках и файлах:
- CWD возвращает каталог, содержащий выполняющуюся записную книжку или скрипт.
- CWD возвращает каталог, представляющий временный том хранилища, подключенный к драйверу.
Это поведение CWD влияет на весь код, включая %sh
код Python или R, который не использует Apache Spark. Поведение определяется языком кода, версией Databricks Runtime, пути к рабочей области и конфигурацией администратора рабочей области.
Для кода Scala CWD — это эфемерное хранилище, подключенное к драйверу.
Для кода на всех других языках:
- В Databricks Runtime 14.0 и более поздних версиях CWD — это каталог, содержащий записную книжку или скрипт, запущенный. Это верно независимо от того, входит
/Workspace/Repos
ли код. - Для записных книжек под управлением Databricks Runtime 13.3 LTS и ниже CWD зависит от того, находится ли код в
/Workspace/Repos
: - Для кода, выполняемого в пути за пределами
/Workspace/Repos
, CWD — это временный том хранилища, подключенный к драйверу. - Для кода, выполняемого в пути
/Workspace/Repos
, CWD зависит от параметра конфигурации администратора и версии DBR кластера:- Для рабочих областей с
enableWorkspaceFilesystem
set доdbr8.4+
или сtrue
на версиях DBR 8.4 и выше, CWD — это каталог, содержащий выполняющийся ноутбук или скрипт. В версиях DBR ниже 8.4 это временный том хранилища, подключенный к драйверу - Для рабочих областей с
enableWorkspaceFilesystem
set доdbr11.0+
в DBR версии 11.0 и выше CWD — это каталог, содержащий записную книжку или скрипт, выполняемый. В версиях DBR ниже 11.0 это временный том хранилища, подключенный к драйверу. - Для рабочих областей с
enableWorkspaceFilesystem
set дляfalse
CWD — это временный том хранилища, подключенный к драйверу.
- Для рабочих областей с
Get текущий рабочий каталог (CWD) в вашем коде
Чтобы get рабочей области CWD для записной книжки конвейера, вызовите os.getcwd()
. Необходимо импортировать os
модуль (модуль взаимодействия файловой системы Python по умолчанию) в начале записной книжки.import os
Например:
import os
...
cwd = os.getcwd()
Вы также можете set текущий рабочий каталог (CWD), вызвав os.chdir('/path/to/dir')
в начале вашего блокнота обработки данных. При запуске записной книжки из рабочей области с поддержкой WSFS можно set CWD.
Как это влияет на рабочие нагрузки?
Наибольшее влияние на рабочие нагрузки связано с сохранением файлов и расположением:
- В Databricks Runtime 13.3 LTS и ниже для кода, выполняемого вне пути
/Workspace/Repos
, многие фрагменты кода хранят данные по умолчанию в томе эфемерного хранилища, который окончательно удаляется при завершении кластера. - В Databricks Runtime 14.0 и более поздних версиях поведение по умолчанию создает файлы рабочей области, хранящиеся вместе с запущенной записной книжкой, которая сохраняется до явного удаления.
Заметки о различиях в производительности и других ограничениях, присущих файлам рабочей области, см. в статье "Работа с файлами рабочей области".
Возврат к поведению прежних версий
Текущий рабочий каталог для любой записной книжки можно изменить с помощью метода os.chdir()
Python. Если вы хотите убедиться, что каждая записная книжка использует CWD в эфемерном хранилище, volumes подключенном к драйверу, можно добавить следующую команду в первую ячейку каждой записной книжки и запустить ее перед любым другим кодом:
import os
os.chdir("/tmp")