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:

  1. CWD vrátí adresář obsahující spuštěný poznámkový blok nebo skript.
  2. 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/Reposv 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 nebo trueverzí 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 na dbr11.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ím falseje CWD dočasný svazek úložiště připojený k ovladači.

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")