Mi az alapértelmezett aktuális munkakönyvtár?
Ez a cikk bemutatja, hogyan működik az alapértelmezett aktuális munkakönyvtár (CWD) a jegyzetfüzet és a fájlvégrehajtás során.
Feljegyzés
A Databricks Runtime 14.0+ és az alapértelmezett munkaterület-konfigurációk használatával nagyobb konzisztenciát biztosít a (CWD) viselkedésében a munkaterületen.
A jegyzetfüzetekben és fájlokban helyileg végrehajtott kódhoz két alapértelmezett CWD-viselkedés van:
- A CWD a futtatott jegyzetfüzetet vagy szkriptet tartalmazó könyvtárat adja vissza.
- A CWD egy könyvtárat ad vissza, amely az illesztőprogramhoz csatlakoztatott rövid élettartamú tárolókötetet jelöli.
Ez a CWD-viselkedés minden olyan kódot érint, beleértve az %sh
Apache Sparkot nem használó Python- vagy R-kódot is. A viselkedést a kódnyelv, a Databricks Runtime verziója, a munkaterület elérési útja és a munkaterület rendszergazdai konfigurációja határozza meg.
Scala-kód esetén a CWD az illesztőprogramhoz csatolt rövid élettartamú tároló.
Kód minden más nyelven:
- A Databricks Runtime 14.0-s vagy újabb verziójában a CWD a futtatandó jegyzetfüzetet vagy szkriptet tartalmazó könyvtár. Ez attól függetlenül igaz, hogy a kód benne
/Workspace/Repos
van-e. - A Databricks Runtime 13.3 LTS-t és újabb verziót futtató jegyzetfüzetek esetén a CWD attól függ, hogy a kód a következőben
/Workspace/Repos
található-e: - A külső
/Workspace/Repos
elérési úton végrehajtott kód esetében a CWD az illesztőprogramhoz csatlakoztatott rövid ideig használt tárolókötet - Az elérési úton
/Workspace/Repos
végrehajtott kód esetén a CWD a rendszergazdai konfigurációs beállítástól és a fürt DBR-verziójától függ:- Olyan munkaterületek esetében, amelyek
enableWorkspaceFilesystem
set-tóldbr8.4+
-ig vagytrue
-mal rendelkeznek, a DBR 8.4-es és újabb verzióiban a CWD az a könyvtár, amely a futtatandó jegyzetfüzetet vagy szkriptet tartalmazza. A 8.4 alatti DBR-verziók esetében ez az illesztőprogramhoz csatlakoztatott rövid élettartamú tárolókötet - Azoknál a munkaterületeknél, amelyek a
enableWorkspaceFilesystem
setdbr11.0+
közötti címkékkel rendelkeznek, a DBR 11.0-s és újabb verzióiban a CWD az a könyvtár, amely a futtatott jegyzetfüzetet vagy szkriptet tartalmazza. A 11.0 alatti DBR-verziók esetében ez az illesztőprogramhoz csatlakoztatott rövid élettartamú tárolókötet - Azokban a munkaterületekben, amelyek a
enableWorkspaceFilesystem
set ésfalse
közötti tartományba esnek, a CWD az illesztőprogramhoz csatlakoztatott ideiglenes tárolókötet.
- Olyan munkaterületek esetében, amelyek
A kódban lévő CWD Get
A folyamatjegyzetfüzet munkaterületi CWD-jének get hívja meg a os.getcwd()
. A modult os
(az alapértelmezett Python fájlrendszer-interakciós modult) a jegyzetfüzet elején kell importálnia a következővel import os
: . Példa:
import os
...
cwd = os.getcwd()
A CWD-t a folyamat-munkafüzeted elején a os.chdir('/path/to/dir')
meghívásával is módosíthatod, amikor a set parancsot használod. A CWD-t csak akkor set, ha a munkaterületről futtat egy jegyzetfüzetet, és engedélyezve van a WSFS.
Ez hogyan befolyásolja a számítási feladatokat?
A számítási feladatokra gyakorolt legnagyobb hatás a fájlok megőrzésével és helyével kapcsolatos:
- A Databricks Runtime 13.3 LTS-ben és az alábbi verziókban a külső elérési úton
/Workspace/Repos
végrehajtott kód esetében számos kódrészlet tárolja az adatokat egy rövid élettartamú tárolókötet alapértelmezett helyére, amely a fürt leállásakor véglegesen törlődik. - A Databricks Runtime 14.0-s vagy újabb verziója esetén a műveletek alapértelmezett viselkedése a futó jegyzetfüzet mellett tárolt munkaterület-fájlokat hoz létre, amelyek a explicit törlésig megmaradnak.
A munkaterületfájlokban rejlő teljesítménybeli különbségekkel és egyéb korlátozásokkal kapcsolatos megjegyzésekért lásd: Munkaterületfájlok használata.
Vissza a régi viselkedésre
Bármely jegyzetfüzet aktuális munkakönyvtárát módosíthatja a Python metódussal os.chdir()
. Ha meg szeretné győződni arról, hogy minden jegyzetfüzet CWD-t használ az illesztőprogramhoz csatolt rövid élettartamú volumes, a következő parancsot hozzáadhatja az egyes jegyzetfüzetek első cellájához, és bármely más kód előtt futtathatja:
import os
os.chdir("/tmp")