既定の現在の作業ディレクトリとは?

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

Note

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 のバージョンによって異なります。
    • DBR バージョン 8.4 以降の、enableWorkspaceFilesystemdbr8.4+ または true に設定されているワークスペースの場合、CWD は実行されているノートブックまたはスクリプトを含むディレクトリです。 8.4 より前のバージョンの DBR では、ドライバーに接続されているエフェメラル ストレージ ボリュームです
    • DBR バージョン 11.0 以降で、enableWorkspaceFilesystemdbr11.0+ に設定されているワークスペースの場合、CWD は実行されているノートブックまたはスクリプトを含むディレクトリです。 11.0 より前のバージョンの DBR の場合は、ドライバーに接続されているエフェメラル ストレージ ボリュームです
    • enableWorkspaceFilesystemfalse に設定されているワークスペースの場合、CWD はドライバーに接続されているエフェメラル ストレージ ボリュームです

これはワークロードにどのように影響しますか?

ワークロードへの最大の影響は、ファイルの永続性と場所に関係します。

  • Databricks Runtime 13.3 LTS 以下の場合、/Workspace/Repos の外部のパスで実行されるコードは、多くのコード スニペットで、クラスターの終了時に完全に削除されるエフェメラル ストレージ ボリューム上の既定の位置にデータが格納されます。
  • Databricks Runtime 14.0 以降では、これらの操作のデフォルトの動作により、明示的に削除されるまで保持される実行中のノートブックと共に保存されたワークスペース ファイルが作成されます。

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

レガシ動作に戻す

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

import os

os.chdir("/tmp")