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
enableWorkspaceFilesystem
,set aždbr8.4+
nebotrue
, ve verzích DBR 8.4 a novějších, je CWD adresář obsahující poznámkový blok nebo skript, který je spuštěn. Ve verzích DBR nižších než 8.4 se jedná o dočasný svazek úložiště připojený k ovladači. - Pro pracovní prostory s
enableWorkspaceFilesystem
set aždbr11.0+
, ve verzích DBR 11.0 a novějších, je CWD adresář obsahující poznámkový blok nebo skript, který je spuštěn. 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
enableWorkspaceFilesystem
set ažfalse
je CWD dočasný úložný svazek připojený k řídicímu prvku.
- Pro pracovní prostory s
Get CWD v kódu
Pokud chcete get pracovní adresář pracovního prostoru pro poznámkový blok pipeline, 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()
Můžete také set CWD zavoláním os.chdir('/path/to/dir')
na začátku svého poznámkového bloku potrubí. CWD můžete set 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 efemérním úložišti volumes připojeného 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")