Databricks

Unity Catalog Volumesで実現する非テーブルファイル管理|Managed/External・権限・操作

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Delta Lakeのテーブルとして構造化できないファイル(CSV/JSON/Parquetの生ファイル、画像、 MLモデルのアーティファクト、設定ファイルなど)をガバナンス下で管理するのが Unity Catalog Volumesです。従来はDBFSやクラウドストレージの直接マウントで管理していた 非テーブルファイルに対して、UCの権限制御・監査・リネージを適用できます。

この記事では、Volumesの概要、Managed/Externalの違い、作成・操作のSQL/Python例、 DBFSとの比較、権限モデル、そして試験で問われるポイントを整理します。

Volumes概要

VolumeはUnity Catalogの名前空間(Catalog → Schema → Volume)に属するオブジェクトで、 ファイルのコンテナです。テーブルが「行と列」の構造化データを管理するのに対し、 Volumeは「ファイルとディレクトリ」を管理します。

  • パス形式: /Volumes/<catalog>/<schema>/<volume>/<path>
  • アクセス方式: Spark API / dbutils / SQL / REST API / Unity Catalog UI
  • 権限制御: READ VOLUME(読み取り)/ WRITE VOLUME(書き込み)
  • 監査: すべてのファイル操作が監査ログに記録される

Managed Volume と External Volume

比較軸Managed VolumeExternal Volume
ストレージ管理Unity Catalogが自動管理ユーザーが指定したクラウドストレージパス
DROP時のデータデータも削除されるメタデータのみ削除、データは残る
External Location不要事前に作成が必要
Storage Credential不要External Location経由で必要
既存データの取り込みファイルのコピーが必要既存パスをそのまま参照可能
推奨ケース新規ファイル管理・一時ファイル既存データレイクのUC管理化

CREATE VOLUME構文

-- 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との比較

比較軸DBFSVolumes
ガバナンスなし(ワークスペースACLのみ)Unity Catalog権限で制御
アクセス制御ワークスペース単位カタログ/スキーマ/ボリューム単位
監査ログ限定的全操作を監査ログに記録
パス形式dbfs:/mnt/... または /dbfs/.../Volumes/catalog/schema/volume/...
ワークスペース横断不可(ワークスペースに閉じる)可能(同一Metastore内)
将来性段階的廃止の方向推奨(新機能はVolumesに実装)

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がそれぞれ必要です。

実務のユースケース

  • ランディングゾーン: 外部システムからのCSV/JSONファイルをVolumeに受け取り、Auto Loaderで取り込む
  • MLアーティファクト: 学習済みモデルやスコアリング結果のファイルをVolume に保存
  • 設定ファイル: ETLパイプラインのパラメータファイル(YAML/JSON)を一元管理
  • 画像/PDF: 非構造化データをUC管理下でチーム間共有

試験で問われるポイント

  • Managed VolumeとExternal VolumeのDROP時の挙動の違い
  • VolumeのパスがDBFSパスと異なること(/Volumes/...)
  • READ VOLUMEとWRITE VOLUMEの権限の粒度(ボリューム単位)
  • External VolumeにはExternal Locationの事前作成が必要なこと
  • DBFSではなくVolumesが推奨される理由(ガバナンス・監査・ワークスペース横断)

問題で確認

Data Engineer Associate

問題 1

データエンジニアが、外部ベンダーから日次で受け取るCSVファイルをUnity Catalog管理下で保管し、Auto Loaderで取り込むパイプラインを構築したい。ファイルの着地先としてManaged Volumeを作成した。半年後、このスキーマを別のカタログに移行するためDROP SCHEMAを実行した。CSVファイルはどうなるか。

  1. Managed Volumeのためスキーマと一緒にファイルも削除される
  2. ファイルはクラウドストレージに残り、パスを指定すれば引き続きアクセスできる
  3. ファイルはDBFSのゴミ箱に移動され、30日後に完全削除される
  4. DROP SCHEMAはVolume内にファイルがある場合は実行できずエラーになる

正解: 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権限がないユーザーは読み取りできません。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.