Delta Lakeのテーブルとして構造化できないファイル(CSV/JSON/Parquetの生ファイル、画像、 MLモデルのアーティファクト、設定ファイルなど)をガバナンス下で管理するのが Unity Catalog Volumesです。従来はDBFSやクラウドストレージの直接マウントで管理していた 非テーブルファイルに対して、UCの権限制御・監査・リネージを適用できます。
この記事では、Volumesの概要、Managed/Externalの違い、作成・操作のSQL/Python例、 DBFSとの比較、権限モデル、そして試験で問われるポイントを整理します。
VolumeはUnity Catalogの名前空間(Catalog → Schema → Volume)に属するオブジェクトで、 ファイルのコンテナです。テーブルが「行と列」の構造化データを管理するのに対し、 Volumeは「ファイルとディレクトリ」を管理します。
/Volumes/<catalog>/<schema>/<volume>/<path>| 比較軸 | Managed Volume | External Volume |
|---|---|---|
| ストレージ管理 | Unity Catalogが自動管理 | ユーザーが指定したクラウドストレージパス |
| DROP時のデータ | データも削除される | メタデータのみ削除、データは残る |
| External Location | 不要 | 事前に作成が必要 |
| Storage Credential | 不要 | External Location経由で必要 |
| 既存データの取り込み | ファイルのコピーが必要 | 既存パスをそのまま参照可能 |
| 推奨ケース | 新規ファイル管理・一時ファイル | 既存データレイクのUC管理化 |
-- Managed Volume の作成
CREATE VOLUME prod.raw.landing_files
COMMENT 'CSVやJSONの着地ファイルを管理するManaged Volume';
-- External Volume の作成
-- External LocationとStorage Credentialが事前に必要
CREATE EXTERNAL VOLUME prod.raw.external_landing
LOCATION 's3://my-bucket/landing/'
COMMENT '既存S3バケットを参照するExternal Volume';
-- Volume の確認
SHOW VOLUMES IN prod.raw;
-- Volume の詳細
DESCRIBE VOLUME prod.raw.landing_files;
-- Volume の削除
DROP VOLUME prod.raw.landing_files;Volume内のファイルはSQL、dbutils、Python APIで操作します。
-- SQL: ファイル一覧の取得
LIST '/Volumes/prod/raw/landing_files/2026/03/';
-- SQL: ファイルのアップロード(ノートブックから)
PUT '/Volumes/prod/raw/landing_files/config.json'
OVERWRITE;
-- SQL: ファイルの削除
REMOVE '/Volumes/prod/raw/landing_files/old_data.csv';# Python / dbutils: ファイル一覧
files = dbutils.fs.ls("/Volumes/prod/raw/landing_files/")
for f in files:
print(f.name, f.size)
# Python: ファイルの読み込み
df = spark.read.csv(
"/Volumes/prod/raw/landing_files/sales_2026.csv",
header=True,
inferSchema=True
)
# Python: ファイルの書き出し
df.write.mode("overwrite").parquet(
"/Volumes/prod/raw/landing_files/output/"
)
# Python: ファイルのコピー
dbutils.fs.cp(
"/Volumes/prod/raw/landing_files/config.json",
"/Volumes/prod/raw/landing_files/backup/config.json"
)| 比較軸 | DBFS | Volumes |
|---|---|---|
| ガバナンス | なし(ワークスペースACLのみ) | Unity Catalog権限で制御 |
| アクセス制御 | ワークスペース単位 | カタログ/スキーマ/ボリューム単位 |
| 監査ログ | 限定的 | 全操作を監査ログに記録 |
| パス形式 | dbfs:/mnt/... または /dbfs/... | /Volumes/catalog/schema/volume/... |
| ワークスペース横断 | 不可(ワークスペースに閉じる) | 可能(同一Metastore内) |
| 将来性 | 段階的廃止の方向 | 推奨(新機能はVolumesに実装) |
Volumeに対する権限は、ボリュームレベルで付与します。 ファイル個別の権限は設定できず、ボリューム単位でのREAD/WRITEが最小粒度です。
-- 読み取り権限の付与
GRANT READ VOLUME ON VOLUME prod.raw.landing_files TO `data-analysts`;
-- 書き込み権限の付与
GRANT WRITE VOLUME ON VOLUME prod.raw.landing_files TO `data-engineers`;
-- Volume作成権限の付与(スキーマレベル)
GRANT CREATE VOLUME ON SCHEMA prod.raw TO `data-engineers`;
-- 権限の確認
SHOW GRANTS ON VOLUME prod.raw.landing_files;READ VOLUMEはファイルの読み取り・一覧取得を許可し、WRITE VOLUMEはファイルの書き込み・削除を許可します。 なお、テーブルのSELECT権限とは独立しているため、Volume経由でファイルを読むにはREAD VOLUMEが、 テーブルをクエリするにはSELECTがそれぞれ必要です。
Data Engineer Associate
問題 1
データエンジニアが、外部ベンダーから日次で受け取るCSVファイルをUnity Catalog管理下で保管し、Auto Loaderで取り込むパイプラインを構築したい。ファイルの着地先としてManaged Volumeを作成した。半年後、このスキーマを別のカタログに移行するためDROP SCHEMAを実行した。CSVファイルはどうなるか。
正解: A
Managed VolumeはUnity Catalogがストレージのライフサイクルを管理するため、スキーマやボリュームのDROP時にデータも一緒に削除されます。データを残したい場合はExternal Volumeを使用します。DROP SCHEMA CASCADEでボリューム含むオブジェクトが連鎖削除されます。
Managed VolumeとExternal Volumeの使い分けの基準は?
Managed VolumeはUnity Catalogがストレージを自動管理するため、カタログやスキーマのDROP時にデータも削除されます。小〜中規模のファイル管理や、ライフサイクルをカタログに委ねたいケースに適しています。External Volumeは既存のS3/ADLS/GCSパスを参照するため、DROPしてもデータは残ります。既存のデータレイクをUC管理下に置く場合や、外部システムと共有するファイルに適しています。
VolumesとDBFSの違いは何ですか?
Volumesは Unity Catalog管理下でファイルをガバナンスする仕組みで、READ VOLUME/WRITE VOLUMEの権限制御、監査ログ、リネージ追跡が可能です。DBFSはワークスペース単位のレガシーファイルシステムで、UC権限が適用されず、ワークスペースを横断した一元管理もできません。新規開発ではVolumesが推奨され、DBFSは段階的に廃止の方向です。
Volumesに保存したファイルにSparkからどうアクセスしますか?
Volumes内のファイルは /Volumes/<catalog>/<schema>/<volume>/<path> というパスでアクセスします。spark.read.csv('/Volumes/prod/raw/landing/sales.csv') のようにDataFrame APIで直接読み込めます。dbutils.fs.ls('/Volumes/prod/raw/landing/') でファイル一覧も取得可能です。Unity Catalogの権限がパスレベルで適用されるため、READ VOLUME権限がないユーザーは読み取りできません。
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の出題...