デフォルトの現在の作業ディレクトリは何ですか?

この記事では、既定の現在の作業ディレクトリ (CWD) がノートブックとファイルの実行でどのように機能するかについて説明します。

Databricks Runtime 14.0+ と既定のワークスペース構成を使用して、ワークスペース全体で (CWD) 動作の一貫性を高めます。

ノートブックファイルでローカルに実行されるコードには、次の 2 つの既定の CWD 動作があります。

  1. CWD は、実行中のノートブックまたはスクリプトを含むディレクトリを返します。

  2. 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 のバージョンによって異なります。

    • enableWorkspaceFilesystemdbr8.4+ または trueに設定されているワークスペースの場合、DBR バージョン 8.4 以降では、CWD は実行中のノートブックまたはスクリプトを含むディレクトリです。8.4 より前の DBR バージョンでは、ドライバーにアタッチされているエフェメラル ストレージ ボリュームです

    • enableWorkspaceFilesystemdbr11.0+に設定されているワークスペースの場合、DBR バージョン 11.0 以降では、CWD は実行中のノートブックまたはスクリプトを含むディレクトリです。11.0 より前の DBR バージョンでは、ドライバーに接続されているエフェメラル ストレージ ボリュームです

    • enableWorkspaceFilesystemfalseに設定されているワークスペースの場合、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 以降では、これらの操作の既定の動作により、明示的に削除されるまで保持される実行中のノートブックと共に格納されるワークスペース ファイルが作成されます。

パフォーマンスの違いやワークスペース ファイルに固有のその他の制限に関する注意事項については、ワークスペース ファイルの操作を参照してください。

従来の動作に戻す

ノートブックの現在の作業ディレクトリを変更するには、Python メソッド os.chdir()を使用します。 各ノートブックがドライバーに接続されているエフェメラルストレージボリュームでCWDを使用するようにする場合は、各ノートブックの最初のセルに次のコマンドを追加し、他のコードの前に実行できます。

import os

os.chdir("/tmp")