プログラムによるワークスペース ファイルの操作

Databricks に格納されているワークスペース ファイルをプログラムで操作できます。 これにより、次のようなタスクが可能になります。

  • ノートブックやコードと共に小さなデータ ファイルを格納する。

  • Git と同期されたディレクトリへのログファイルの書き込み。

  • 相対パスを使用したモジュールのインポート。

  • 環境仕様ファイルの作成または変更。

  • ノートブックからの出力の書き込み。

  • TensorBoardなどのライブラリの実行からの出力の書き込み。

Databricks Runtime 11.3 LTS 以降では、ワークスペース ファイルをプログラムで作成、編集、名前変更、削除できます。 ノートブック向けの本機能は、 Databricks Runtime 16.2 以降、およびサーバレス環境 2 以降でサポートされています。

ワークスペース ファイルへの書き込みを無効にするには、クラスター環境変数 WSFS_ENABLE_WRITE_SUPPORT=falseを設定します。 詳しくは、 環境変数をご覧ください。

Databricks Runtime 14.0 以降では、ローカルで実行されるコードの既定の現在の作業ディレクトリ (CWD) は、実行されているノートブックまたはスクリプトを含むディレクトリです。 これは、Databricks Runtime 13.3 LTS 以前からの動作の変更です。 デフォルトの現在の作業ディレクトリは何ですか?を参照してください。

ファイルの場所を読み取る

シェルコマンドを使用して、 repo やローカルファイルシステムなどのファイルの場所を読み取ります。

ファイルの場所を判別するには、次のように入力します。

%sh ls
  • ファイルが repoにない: コマンド はファイルシステム /databricks/driverを返します。

  • ファイルは repoにあります: コマンドは、 /Workspace/Repos/name@domain.com/public_repo_2/repos_file_system などの仮想化された repo を返します。

データ ワークスペース ファイルの読み取り

ノートブックのコードから、 .csv ファイルや .json ファイルなどの小さなデータ ファイルをプログラムで読み取ることができます。 次の例では、 Pandas を使用して、プロジェクト リポジトリのルートを基準にした /data ディレクトリに格納されているファイルをクエリーします。

import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df

Spark を使用してデータ ファイルを読み取ることができます。 Spark に完全修飾パスを指定する必要があります。

  • Git フォルダー内のワークスペース ファイルはパスfile:/Workspace/Repos/<user-folder>/<repo-name>/path/to/fileを使用します。

  • 個人用ディレクトリ内のワークスペース ファイルは、パス file:/Workspace/Users/<user-folder>/path/to/fileを使用します。

ファイルへの絶対パスまたは相対パスは、ファイルの横にあるドロップダウン メニューからコピーできます。

[ファイル] ドロップダウン メニュー

次の例は、 {os.getcwd()} を使用して完全パスを取得する方法を示しています。

import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")

Databricks 上のファイルの詳細については、Databricks 上のファイルの操作を参照してください。

プログラムによるファイルとディレクトリの作成、更新、および削除

Databricks Runtime 11.3 LTS 以降では、Databricks のワークスペース ファイルを直接操作できます。 ノートブックは、 Databricks Runtime 16.2 以降、およびサーバレス環境 2 以降ではワークスペース ファイルとして扱われます。 次の例では、標準の Python パッケージと機能を使用して、ファイルとディレクトリを作成および操作します。

# Create a new directory

os.mkdir('dir1')

# Create a new file and write to it

with open('dir1/new_file.txt', "w") as f:
    f.write("new content")

# Append to a file

with open('dir1/new_file.txt', "a") as f:
    f.write(" continued")

# Delete a file

os.remove('dir1/new_file.txt')

# Delete a directory

os.rmdir('dir1')

ワークスペース ファイルとしてのノートブック

Databricks Runtime 16.2 以降、およびサーバレス環境 2 以降では、ファイルとのプログラムによるすべての対話をノートブックでも使用できます。ワークスペース内のアセットは、拡張子が .ipynb の場合、または最初の行のコメントに文字列 の Databricks notebook source が含まれ、拡張子が .py.r.scala.sqlのいずれかである場合にノートブックとして識別されます。 これらの条件を変更するノートブックまたはファイルの書き込みまたは名前変更を行うと、ノートブックまたはファイルの種類も変更されます。 たとえば、最初の行が # Databricks notebook source であるファイル myfile.txtがある場合、そのファイルの名前を myfile.py に変更すると、ノートブックに変換されます。