Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak działa domyślny bieżący katalog roboczy (CWD) podczas wykonywania notebooków i plików.
Uwaga
Użyj Databricks Runtime 14.0 lub nowszej oraz 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 tymczasowy wolumin pamięci masowej dołączony do sterownika.
To zachowanie CWD ma wpływ na cały kod, w tym %sh oraz kod Pythona lub R-a, 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 notatnik 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, CWD jest efemerycznym woluminem magazynu dołączonym do sterownika - W przypadku kodu wykonywanego w ścieżce w
/Workspace/Repos, CWD zależy od ustawienia konfiguracji administratora i wersji klastra Databricks Runtime.- W przypadku obszarów roboczych z
enableWorkspaceFilesystemustawioną wartościądbr8.4+lubtruew środowisku Databricks Runtime w wersji 8.4 lub nowszej CWD jest katalogiem zawierającym uruchamiany notes lub skrypt. W wersjach środowiska Databricks Runtime poniżej 8.4 jest to tymczasowy wolumin magazynowy dołączony do węzła zarządzającego. - W przypadku obszarów roboczych z
enableWorkspaceFilesystemustawioną wartościądbr11.0+w środowisku Databricks Runtime w wersji 11.0 lub nowszej CWD jest katalogiem zawierającym notes lub uruchamiany skrypt. W środowisku Databricks Runtime w wersjach poniżej 11.0 jest to efemeryczny wolumin magazynu dołączony do sterownika - W przypadku obszarów roboczych z
enableWorkspaceFilesystemustawioną wartościąfalseCWD jest efemerycznym woluminem magazynu dołączonym do sterownika
- W przypadku obszarów roboczych z
Pobierz CWD w kodzie
Aby uzyskać nazwę CWD obszaru roboczego dla notesu potoku, wywołaj metodę os.getcwd(). Musisz zaimportować moduł os (domyślny moduł interakcji systemu plików w języku Python) na początku notatnika przy użyciu 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 notatnika 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 ma trwałość plików i lokalizacja.
- W środowiskach Databricks Runtime 13.3 LTS i starszych, kod wykonywany w ścieżce poza
/Workspace/Reposzapisuje dane w domyślnej lokalizacji na tymczasowym woluminie pamięci, który jest trwale usuwany po zakończeniu działania klastra. - W Databricks Runtime 14.0 lub nowszym domyślne działanie tych operacji powoduje utworzenie plików przestrzeni roboczej, które są przechowywane obok uruchomionego notesu i pozostają trwałe do momentu ich jawnego usunięcia.
Aby uzyskać informacje na temat różnic w wydajności i innych ograniczeń związanych z plikami obszaru roboczego, zobacz Praca z plikami obszaru roboczego.
Przywróć działanie w trybie 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 notatnik używa CWD na woluminach magazynu efemerycznego podłączonych do sterownika, możesz dodać następujące polecenie do pierwszej komórki każdego notatnika i uruchomić je przed jakimkolwiek innym kodem.
import os
os.chdir("/tmp")