Dela via


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:

  1. CWD returnerar katalogen som innehåller anteckningsboken eller skriptet som körs.
  2. 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/Reposberor CWD på administratörskonfigurationsinställningen och kluster-DBR-versionen:
    • För arbetsytor med enableWorkspaceFilesystem inställt dbr8.4+ på eller true, 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ällt dbr11.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

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