プログラムによってワークスペース ファイルを操作する
Azure 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 以下の動作の変更です。 「既定の現在の作業ディレクトリとは」を参照してください。.
ファイルの場所を読み取る
シェル コマンドを使用して、リポジトリやローカル ファイルシステムなどのファイルの場所を読み取ります。
ファイルの場所を確認するには、次のように入力します。
%sh ls
- ファイルはリポジトリにありません: コマンドはファイルシステム
/databricks/driver
を返します。 - ファイルはリポジトリにあります: コマンドは、
/Workspace/Repos/name@domain.com/public_repo_2/repos_file_system
などの仮想化されたリポジトリを返します。
データ作業スペースファイルを読む
ノートブック内のコードから .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")
Azure Databricks 上のファイルの詳細については、「Azure Databricksでのファイルの操作」を参照してください。
プログラムによってファイルとディレクトリを作成、更新、削除する
Databricks Runtime 11.3 LTS 以降では、Azure 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
.
これらの条件を変更するノートブックまたはファイルの書き込みまたは名前変更は、ノートブックまたはファイルの種類も変更します。 たとえば、1 行目が # Databricks notebook source
である myfile.txt
ファイルがある場合、そのファイルの名前を myfile.py
に変更すると、ノートブックに変換されます。
ファイルをノートブックに変換する方法については、「ファイルをインポートしてノートブックに変換する」を参照してください。