Databricksではノートブック以外にもPythonモジュール、SQLファイル、設定ファイル、requirements.txtなどを ワークスペース内に配置する必要があります。Workspace Filesは、 ノートブックと同じファイルツリー上にあらゆるファイルタイプを配置し、 相対インポートや依存管理を実現する機能です。
この記事では、Workspace Filesの概要、Reposとの比較、相対インポートの方法、 requirements.txtによるパッケージ管理、そして実務でよく使われる依存管理パターンを解説します。
Workspace Filesは、Databricksワークスペースの/Workspace/配下に配置される 非ノートブックファイルの総称です。2023年以降のDatabricksでは、ワークスペースのファイルブラウザから Pythonファイル(.py)、テキストファイル(.txt/.csv/.json)、YAML、設定ファイルなどを 直接アップロード・作成・編集できます。
Workspace Filesが導入される以前は、ノートブック以外のファイルをDatabricks上で管理するには DBFSにアップロードするか、%runマジックコマンドで他のノートブックを呼び出す必要がありました。 Workspace Filesにより、通常のPythonプロジェクトと同じディレクトリ構造・インポート方式が使えるようになっています。
| 観点 | Repos | Workspace Files |
|---|---|---|
| Git統合 | あり(Clone/Pull/Push/Branch) | なし(手動アップロードまたはAPI経由) |
| 主な用途 | チーム開発・バージョン管理・PRレビュー | 個人の作業ファイル・補助モジュール・依存ファイル |
| ファイルパス | /Workspace/Repos/<user>/<repo>/ | /Workspace/Users/<user>/ または /Workspace/Shared/ |
| 相対インポート | サポート(カレントディレクトリがsys.pathに追加) | サポート(同様にsys.pathに追加) |
| アクセス制御 | ワークスペースACL + Git権限 | ワークスペースACLのみ |
| サイズ上限 | リポジトリ全体で10GB | 個別ファイルで500MB |
| バージョン管理 | Gitの全機能(履歴・差分・ブランチ) | なし(上書き保存のみ) |
チーム開発のコード本体はReposで管理し、個人の実験スクリプトや一時的な設定ファイルは Workspace Filesに配置する使い分けが一般的です。
Workspace Files(Repos含む)では、ノートブックと同じディレクトリに配置したPythonファイルを 通常のimport文で読み込めます。これはノートブック実行時にカレントディレクトリがsys.pathに自動追加されるためです。
/Workspace/Users/[email protected]/my-project/
├── main_notebook.py # メインのノートブック
├── utils.py # ユーティリティ関数
├── config.yaml # 設定ファイル
├── requirements.txt # 依存パッケージ定義
└── transformations/
├── __init__.py # パッケージ化に必要
├── clean.py # データクレンジング関数
└── aggregate.py # 集約処理関数# main_notebook.py
# 同じディレクトリのモジュールをインポート
from utils import validate_schema, log_metrics
# サブディレクトリのパッケージをインポート
from transformations.clean import remove_duplicates
from transformations.aggregate import daily_summary
# 設定ファイルの読み込み
import yaml
with open("config.yaml", "r") as f:
config = yaml.safe_load(f)
# 処理の実行
df = spark.read.format("delta").load(config["input_path"])
df_clean = remove_duplicates(df)
df_summary = daily_summary(df_clean)
df_summary.write.format("delta").mode("overwrite").save(config["output_path"])__init__.pyがサブディレクトリに配置されていることが重要です。 これがないとPythonがそのディレクトリをパッケージとして認識せず、from transformations.clean import ...が失敗します。
Workspace Files内にrequirements.txtを配置し、ノートブック内から%pipでインストールする方式は 依存パッケージ管理のシンプルなパターンです。
# requirements.txt
pandas==2.2.0
requests==2.31.0
pyyaml==6.0.1
great-expectations==0.18.0# ノートブックの先頭セルで実行
%pip install -r ./requirements.txt%pipはノートブックスコープのパッケージインストールを行い、 クラスタ全体の環境には影響しません。ただし%pipセルを実行するとPythonプロセスが 再起動されるため、必ずノートブックの先頭で実行する必要があります。
| パターン | 方法 | 適用場面 | メリット | デメリット |
|---|---|---|---|---|
| %pip install | ノートブック内で%pip install package | 個人の実験・探索分析 | 即座にインストール可能 | バージョン固定が曖昧になりやすい |
| requirements.txt | ファイルに依存を列挙し%pip install -r | プロジェクト単位のパッケージ管理 | バージョンが明示的・再現性が高い | 毎回インストールに時間がかかる |
| クラスタライブラリ | クラスタ設定でライブラリを事前インストール | チーム共通の依存パッケージ | ノートブック側で%pipが不要 | クラスタ再起動が必要 |
| Init Script | クラスタ起動時にスクリプトで自動インストール | OS依存ライブラリやシステム設定 | 起動時に自動実行 | デバッグが困難・起動時間の増加 |
| Wheelファイル | 自作パッケージを.whlにビルドしてインストール | 社内共通ライブラリの配布 | インストールが高速・バージョン管理が明確 | ビルドプロセスの構築が必要 |
Workspace Filesはブラウザからのアップロードだけでなく、REST APIやDatabricks CLIで管理できます。 CI/CDパイプラインでの自動配置に便利です。
# Databricks CLIでファイルをアップロード
databricks workspace import \
--path /Workspace/Shared/etl-project/utils.py \
--file ./src/utils.py \
--format SOURCE \
--language PYTHON
# REST APIでファイル一覧を取得
curl -X GET \
"https://<workspace-url>/api/2.0/workspace/list" \
-H "Authorization: Bearer <token>" \
-d '{"path": "/Workspace/Shared/etl-project"}'
# REST APIでファイルをエクスポート
curl -X GET \
"https://<workspace-url>/api/2.0/workspace/export" \
-H "Authorization: Bearer <token>" \
-d '{"path": "/Workspace/Shared/etl-project/utils.py", "format": "SOURCE"}'Development Tools
問題 1
データエンジニアが複数のノートブックから共通で使用するバリデーション関数をPythonモジュール(validators.py)として切り出したい。ノートブックから from validators import check_schema でインポートしたい場合、最も適切なファイル配置はどれか。
正解: A
Workspace Files内でノートブックと同じディレクトリに.pyファイルを配置すると、カレントディレクトリがsys.pathに自動追加されるため、標準的なimport文でインポートできます。DBFSに配置したファイルはsys.pathに含まれないため直接インポートできません。%runは関数の再利用に使えますが、import文の形式では呼び出せません。Init Scriptはクラスタ起動時のシステム設定用であり、Pythonモジュールの配置には不適切です。
Workspace FilesとDBFS(Databricks File System)の違いは何ですか?
Workspace Filesはワークスペースのファイルツリー(/Workspace/配下)に配置されるファイルで、ノートブックやPythonモジュールと同じ階層で管理されます。DBFSはDatabricksが管理するファイルシステムで、/dbfs/配下にマウントされ、クラスタから直接アクセスできます。Workspace Filesはコード・設定ファイル・小さな依存ファイルの配置に適し、DBFSは大量のデータファイルの配置に適しています。Unity Catalog時代ではDBFSの直接利用は推奨されず、Volumes経由のアクセスが標準になりつつあります。
Workspace Filesで相対インポートはどう書きますか?
Workspace Files内のPythonモジュールは通常のPythonの相対/絶対インポートで参照できます。例えば、/Workspace/Users/[email protected]/project/ 配下にutils.pyを配置した場合、同じディレクトリのノートブックから import utils または from utils import my_function でインポートできます。サブディレクトリの場合は __init__.py を配置してパッケージ化し、from subdir.module import func の形式で参照します。Repos内でも同様にカレントディレクトリがsys.pathに追加されるため、相対インポートが自然に動作します。
Workspace FilesはDatabricks認定試験でどう出題されますか?
Data Engineer Associate試験の「開発環境とツール」ドメインで出題されます。主な出題パターンは「ノートブックから外部Pythonモジュールをインポートする方法」「依存ファイル(requirements.txt等)の配置場所」「Workspace FilesとReposの使い分け」です。Workspace Filesのパス形式(/Workspace/...)やDBFSとの違いを明確に理解しておくことが重要です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...