Jaki jest domyślny bieżący katalog roboczy?
W tym artykule opisano sposób działania domyślnego bieżącego katalogu roboczego (CWD) na potrzeby wykonywania notesu i pliku.
Uwaga
Użyj konfiguracji środowiska Databricks Runtime 14.0 lub nowszego i domyślnych konfiguracji obszaru roboczego, aby uzyskać większą spójność w zachowaniu (CWD) w całym obszarze roboczym.
Istnieją dwa domyślne zachowania CWD dla kodu wykonywanego lokalnie w notesach i plikach:
- Funkcja CWD zwraca katalog zawierający uruchamiany notes lub skrypt.
- Funkcja CWD zwraca katalog reprezentujący efemeryczny wolumin magazynu dołączony do sterownika.
To zachowanie CWD ma wpływ na cały kod, w tym %sh
język Python lub R, który nie korzysta z platformy Apache Spark. Zachowanie jest określane przez język kodu, wersję środowiska Databricks Runtime, ścieżkę obszaru roboczego i konfigurację administratora obszaru roboczego.
W przypadku kodu Scala CWD jest efemerycznym magazynem dołączonym do sterownika.
W przypadku kodu we wszystkich innych językach:
- W środowisku Databricks Runtime 14.0 lub nowszym CWD jest katalogiem zawierającym uruchamiany notes lub skrypt. Jest to prawda niezależnie od tego, czy kod znajduje się w pliku
/Workspace/Repos
. - W przypadku notesów z uruchomionym środowiskiem Databricks Runtime 13.3 LTS i nowszym CWD zależy od tego, czy kod znajduje się w pliku
/Workspace/Repos
: - W przypadku kodu wykonywanego w ścieżce poza
/Workspace/Repos
elementem CWD jest efemerycznym woluminem magazynu dołączonym do sterownika - W przypadku kodu wykonywanego w ścieżce w
/Workspace/Repos
pliku CWD zależy od ustawienia konfiguracji administratora i wersji DBR klastra:- W przypadku obszarów roboczych z ustawioną
enableWorkspaceFilesystem
wartościądbr8.4+
lubtrue
w wersji DBR w wersji 8.4 lub nowszej CWD jest katalogiem zawierającym uruchamiany notes lub skrypt. W wersjach DBR poniżej 8.4 jest to efemeryczny wolumin magazynu dołączony do sterownika - W przypadku obszarów roboczych z
enableWorkspaceFilesystem
ustawioną wartościądbr11.0+
, w wersji DBR w wersji 11.0 lub nowszej, CWD jest katalogiem zawierającym uruchamiany notes lub skrypt. W wersjach DBR poniżej 11.0 jest to efemeryczny wolumin magazynu dołączony do sterownika - W przypadku obszarów roboczych z
enableWorkspaceFilesystem
ustawioną wartościąfalse
CWD jest efemerycznym woluminem magazynu dołączonym do sterownika
- W przypadku obszarów roboczych z ustawioną
Pobieranie CWD w kodzie
Aby uzyskać nazwę CWD obszaru roboczego dla notesu potoku, wywołaj metodę os.getcwd()
. Musisz zaimportować os
moduł (domyślny moduł interakcji systemu plików w języku Python) na początku notesu za pomocą polecenia import os
. Na przykład:
import os
...
cwd = os.getcwd()
Można również ustawić CWD, wywołując os.chdir('/path/to/dir')
na początku notesu potoku. Funkcję CWD można ustawić tylko podczas uruchamiania notesu z obszaru roboczego z włączonym systemem WSFS.
Jak to wpływa na obciążenia?
Największy wpływ na obciążenia muszą mieć wpływ na trwałość plików i lokalizację:
- W środowisku Databricks Runtime 13.3 LTS i poniżej kod wykonywany w ścieżce poza
/Workspace/Repos
programem wiele fragmentów kodu przechowuje dane do domyślnej lokalizacji na woluminie magazynu efemerycznego, który jest trwale usuwany po zakończeniu działania klastra. - W środowisku Databricks Runtime 14.0 lub nowszym domyślne zachowanie tych operacji powoduje utworzenie plików obszarów roboczych przechowywanych obok uruchomionego notesu, który będzie trwały do momentu jawnego usunięcia.
Aby uzyskać uwagi na temat różnic w wydajności i innych ograniczeń związanych z plikami obszarów roboczych, zobacz Praca z plikami obszaru roboczego.
Przywróć zachowanie starszej wersji
Bieżący katalog roboczy dla dowolnego notesu można zmienić przy użyciu metody os.chdir()
języka Python . Jeśli chcesz się upewnić, że każdy notes używa dysku CWD na woluminach magazynu efemerycznego dołączonych do sterownika, możesz dodać następujące polecenie do pierwszej komórki każdego notesu i uruchomić go przed innym kodem:
import os
os.chdir("/tmp")