Megosztás a következőn keresztül:


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:

  1. A CWD a futtatott jegyzetfüzetet vagy szkriptet tartalmazó könyvtárat adja vissza.
  2. 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/Reposvan-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/Repostalálható-e:
  • A külső /Workspace/Reposelé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/Reposvé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 enableWorkspaceFilesystemset-tól dbr8.4+-ig vagy true-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 enableWorkspaceFilesystemsetdbr11.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 enableWorkspaceFilesystemset és falseközötti tartományba esnek, a CWD az illesztőprogramhoz csatlakoztatott ideiglenes tárolókötet.

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/Reposvé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")