Jaký je výchozí aktuální pracovní adresář?
Tento článek popisuje, jak funguje výchozí aktuální pracovní adresář (CWD) pro spouštění poznámkových bloků a souborů.
Poznámka:
Pro větší konzistenci v celém pracovním prostoru použijte Databricks Runtime 14.0+ a výchozí konfigurace pracovních prostorů.
Existují dvě výchozí chování CWD pro kód spuštěný místně v poznámkových blocích a souborech:
- CWD vrátí adresář obsahující spuštěný poznámkový blok nebo skript.
- CWD vrátí adresář představující dočasný svazek úložiště připojený k ovladači.
Toto chování CWD ovlivňuje veškerý kód, včetně %sh
kódu Pythonu nebo R, který nepoužívá Apache Spark. Toto chování je určeno jazykem kódu, verzí modulu Databricks Runtime, cestou pracovního prostoru a konfigurací správce pracovního prostoru.
Pro kód Scala je CWD dočasné úložiště připojené k ovladači.
Kód ve všech ostatních jazycích:
- V Databricks Runtime 14.0 a novějším je CWD adresář obsahující poznámkový blok nebo skript, který se spouští. To platí bez ohledu na to, zda kód je v
/Workspace/Repos
. - U poznámkových bloků s Modulem Databricks Runtime 13.3 LTS a níže závisí CWD na tom, jestli je kód v
/Workspace/Repos
: - Kód spuštěný v cestě mimo
/Workspace/Repos
, CWD je dočasný svazek úložiště připojený k ovladači. - Kód spuštěný v cestě
/Workspace/Repos
v nástroji CWD závisí na nastavení konfigurace správce a verzi dbr clusteru:- Pro pracovní prostory s nastaveným
enableWorkspaceFilesystem
dbr8.4+
nastavením nebotrue
verzí 8.4 a novějším dbR je CWD adresář obsahující poznámkový blok nebo skript, který se spouští. Ve verzích DBR nižších než 8.4 se jedná o dočasný svazek úložiště připojený k ovladači. - U pracovních prostorů s nastaveným
enableWorkspaceFilesystem
nastavením nadbr11.0+
dbR verze 11.0 a vyšší je CWD adresář obsahující poznámkový blok nebo skript, který se spouští. Ve verzích DBR nižších než 11.0 se jedná o dočasný svazek úložiště připojený k ovladači. - Pro pracovní prostory s nastaveným
enableWorkspaceFilesystem
nastavenímfalse
je CWD dočasný svazek úložiště připojený k ovladači.
- Pro pracovní prostory s nastaveným
Získání CWD v kódu
Pokud chcete získat CWD pracovního prostoru pro poznámkový blok kanálu, zavolejte os.getcwd()
. Modul (výchozí modul interakce systému souborů Pythonu) musíte naimportovat os
na začátku poznámkového bloku pomocí import os
. Příklad:
import os
...
cwd = os.getcwd()
CWD můžete také nastavit voláním os.chdir('/path/to/dir')
na začátku poznámkového bloku kanálu. CWD můžete nastavit pouze při spouštění poznámkového bloku z pracovního prostoru s povolenou službou WSFS.
Jaký to má vliv na úlohy?
Největší dopady na úlohy musí mít zachování souborů a umístění:
- V Databricks Runtime 13.3 LTS a níže platí, že kód spuštěný v cestě mimo
/Workspace/Repos
, mnoho fragmentů kódu ukládá data do výchozího umístění na dočasném svazku úložiště, který se trvale odstraní při ukončení clusteru. - Ve službě Databricks Runtime 14.0 a novějších vytvoří výchozí chování těchto operací soubory pracovního prostoru uložené společně se spuštěným poznámkým blokem, který se uchovává, dokud se explicitně nesmazat.
Poznámky k rozdílům v výkonu a dalším omezením, která jsou součástí souborů pracovního prostoru, najdete v tématu Práce se soubory pracovního prostoru.
Návrat k chování starší verze
Aktuální pracovní adresář pro libovolný poznámkový blok můžete změnit pomocí metody os.chdir()
Python . Pokud chcete zajistit, aby každý poznámkový blok používal CWD na dočasných svazcích úložiště připojených k ovladači, můžete do první buňky každého poznámkového bloku přidat následující příkaz a spustit ho před jakýmkoli jiným kódem:
import os
os.chdir("/tmp")