Vilken är den aktuella arbetskatalogens standard?
Den här artikeln beskriver hur den aktuella standardarbetskatalogen (CWD) fungerar för körning av notebook-filer och filer.
Kommentar
Använd Databricks Runtime 14.0+ och standardkonfigurationer för arbetsytor för mer konsekvens i (CWD) beteende i hela arbetsytan.
Det finns två standardbeteenden för CWD för kod som körs lokalt i notebook-filer:
- CWD returnerar katalogen som innehåller anteckningsboken eller skriptet som körs.
- CWD returnerar en katalog som representerar den tillfälliga lagringsvolymen som är kopplad till drivrutinen.
Det här CWD-beteendet påverkar all kod, inklusive %sh
och Python- eller R-kod som inte använder Apache Spark. Beteendet bestäms av kodspråk, Databricks Runtime-version, arbetsytesökväg och konfiguration av arbetsyteadministratör.
För Scala-kod är CWD den tillfälliga lagring som är kopplad till drivrutinen.
För kod på alla andra språk:
- I Databricks Runtime 14.0 och senare är CWD katalogen som innehåller anteckningsboken eller skriptet som körs. Detta gäller oavsett om koden finns i
/Workspace/Repos
. - För notebook-filer som kör Databricks Runtime 13.3 LTS och nedan beror CWD på om koden finns i
/Workspace/Repos
: - För kod som körs i en sökväg utanför
/Workspace/Repos
är CWD den tillfälliga lagringsvolymen som är kopplad till drivrutinen - För kod som körs i en sökväg i
/Workspace/Repos
beror CWD på administratörskonfigurationsinställningen och kluster-DBR-versionen:- För arbetsytor med
enableWorkspaceFilesystem
inställtdbr8.4+
på ellertrue
, i DBR-version 8.4 och senare, är CWD den katalog som innehåller anteckningsboken eller skriptet som körs. På DBR-versioner under 8.4 är det den tillfälliga lagringsvolymen som är kopplad till drivrutinen - För arbetsytor med
enableWorkspaceFilesystem
inställtdbr11.0+
på , i DBR-version 11.0 och senare, är CWD den katalog som innehåller anteckningsboken eller skriptet som körs. På DBR-versioner under 11.0 är det den tillfälliga lagringsvolymen som är kopplad till drivrutinen - För arbetsytor med
enableWorkspaceFilesystem
inställd påfalse
är CWD den tillfälliga lagringsvolymen som är kopplad till drivrutinen
- För arbetsytor med
Hämta CWD i koden
Om du vill hämta arbetsytans CWD för din pipeline notebook-fil anropar du os.getcwd()
. Du måste importera modulen os
(standardmodulen för Python-filsysteminteraktion) i början av notebook-filen med import os
. Till exempel:
import os
...
cwd = os.getcwd()
Du kan också ange CWD genom att anropa os.chdir('/path/to/dir')
i början av pipeline notebook-filen. Du kan bara ange CWD när du kör en notebook-fil från din arbetsyta med WSFS aktiverat.
Hur påverkar detta arbetsbelastningar?
De största effekterna för arbetsbelastningar har att göra med filbeständighet och plats:
- I Databricks Runtime 13.3 LTS och nedan för kod som körs i en sökväg utanför
/Workspace/Repos
lagrar många kodfragment data till en standardplats på en tillfällig lagringsvolym som tas bort permanent när klustret avslutas. - I Databricks Runtime 14.0 och senare skapar standardbeteendet för dessa åtgärder arbetsytefiler som lagras tillsammans med den notebook-fil som körs tills den uttryckligen tas bort.
Information om prestandaskillnader och andra begränsningar i arbetsytefiler finns i Arbeta med arbetsytefiler.
Återgå till äldre beteende
Du kan ändra den aktuella arbetskatalogen för alla notebook-filer med python-metoden os.chdir()
. Om du vill se till att varje notebook-fil använder en CWD på de tillfälliga lagringsvolymer som är anslutna till drivrutinen kan du lägga till följande kommando i den första cellen i varje notebook-fil och köra den före annan kod:
import os
os.chdir("/tmp")