デフォルトの現在の作業ディレクトリは何ですか?
この記事では、既定の現在の作業ディレクトリ (CWD) がノートブックとファイルの実行でどのように機能するかについて説明します。
注
Databricks Runtime 14.0+ と既定のワークスペース構成を使用して、ワークスペース全体で (CWD) 動作の一貫性を高めます。
ノートブックとファイルでローカルに実行されるコードには、次の 2 つの既定の CWD 動作があります。
CWD は、実行中のノートブックまたはスクリプトを含むディレクトリを返します。
CWDは、ドライバーに接続されているエフェメラルストレージボリュームを表すディレクトリを返します。
この CWD の動作は、Apache Spark を使用しない %sh
や Python または R コードを含むすべてのコードに影響します。 動作は、コード言語、Databricks Runtime のバージョン、ワークスペース パス、ワークスペース管理者の構成によって決まります。
Scalaコードの場合、CWDは ドライバーにアタッチされたエフェメラルストレージです。
他のすべての言語のコードの場合:
Databricks Runtime 14.0 以降では、CWD は 実行中のノートブックまたはスクリプトを含むディレクトリです。 これは、コードが
/Workspace/Repos
にあるかどうかに関係なく当てはまります。Databricks Runtime 13.3 LTS 以下を実行しているノートブックの場合、CWD はコードが
/Workspace/Repos
かどうかによって異なります。/Workspace/Repos
の外部のパスで実行されるコードの場合、CWD はドライバーにアタッチされたエフェメラル ストレージ ボリュームです/Workspace/Repos
のパスで実行されるコードの場合、CWD は管理者構成設定とクラスター DBR のバージョンによって異なります。enableWorkspaceFilesystem
がdbr8.4+
またはtrue
に設定されているワークスペースの場合、DBR バージョン 8.4 以降では、CWD は実行中のノートブックまたはスクリプトを含むディレクトリです。8.4 より前の DBR バージョンでは、ドライバーにアタッチされているエフェメラル ストレージ ボリュームですenableWorkspaceFilesystem
がdbr11.0+
に設定されているワークスペースの場合、DBR バージョン 11.0 以降では、CWD は実行中のノートブックまたはスクリプトを含むディレクトリです。11.0 より前の DBR バージョンでは、ドライバーに接続されているエフェメラル ストレージ ボリュームですenableWorkspaceFilesystem
がfalse
に設定されているワークスペースの場合、CWD はドライバーにアタッチされたエフェメラル ストレージ ボリュームです
コードでCWDを取得する
パイプライン ノートブックのワークスペース CWD を取得するには、 os.getcwd()
を呼び出します。 ノートブックの先頭にある os
モジュール (デフォルトの Python ファイルシステム対話モジュール) を import os
でインポートする必要があります。 例えば:
import os
...
cwd = os.getcwd()
CWD を設定するには、パイプライン ノートブックの先頭で os.chdir('/path/to/dir')
を呼び出すこともできます。 CWD を設定できるのは、WSFS が有効になっているワークスペースからノートブックを実行しているときだけです。
これはワークロードにどのように影響しますか?
ワークロードに最も大きな影響を与えるのは、ファイルの永続性と場所に関するものです。
Databricks Runtime 13.3 LTS 以前では、
/Workspace/Repos
の外部のパスで実行されるコードの場合、多くのコード スニペットは、クラスターの終了時に完全に削除されるエフェメラル ストレージ ボリューム上の既定の場所にデータを格納します。Databricks Runtime 14.0 以降では、これらの操作の既定の動作により、明示的に削除されるまで保持される実行中のノートブックと共に格納されるワークスペース ファイルが作成されます。
パフォーマンスの違いやワークスペース ファイルに固有のその他の制限に関する注意事項については、ワークスペース ファイルの操作を参照してください。