4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricksファイルシステム、ワークスペースファイル、ボリュームの違い

Last updated at Posted at 2023-10-26

こちらの記事を書いてから10ヶ月ほど経ちました。

こちらの記事では、DBFS(Databricks File System)とクラスターローカルのファイルシステムのみに言及しました。

その後、ファイルを取り扱う目的で以下の機能がDatabricksに導入されました。

こちらの記事では、これらの新機能とDBFSの違いをまとめます。

サマリー

観点 DBFS ワークスペースファイル ボリューム
ワークスペース横断でのアクセス 不可 不可 可能
アクセスコントロール 不可 ファイル単位に設定可能 ボリューム単位に設定可能
ファイルエディタのサポート 無し 有り 無し
ファイルサイズの制限 アップロードできるファイルサイズは最大2GB 200MB 無し
想定用途 一時ファイルの保存 Pythonモジュールのインポート、git連携 大規模ファイルの読み書き
その他 プロダクション用途での利用は非推奨
  • Unity Catalogが前提
  • ボリュームのファイルからテーブルを作成するとリネージを生成

ここでのワークスペース横断でのアクセスとは、複数のDatabricksワークスペースから同じファイルにアクセスできるかどうかを意味しています。

ノートブックからインポートするpyファイルであればワークスペースファイル、それ以外の非構造化データファイルであればボリュームを使うのが推奨となります。

DBFSとは

(少なくとも私がDatabricksに入社した3年前の)昔から存在しているファイルシステム。アクセスコントロールができないので、プロダクション用途での利用はお勧めしていません。現時点では、一時ファイルを格納しておくくらいしか使い道はありません。

  • ワークスペース横断でのアクセス: 不可
  • アクセスコントロール: 不可
  • ファイルエディタのサポート: 無し
  • ファイルサイズの制限: アップロードできるファイルサイズは最大2GB
  • 想定用途: 一時ファイルの保存
  • その他: プロダクション用途での利用は非推奨

GUIからであれば、カタログエクスプローラから参照することができます。これ以外にPythonなどのプログラミング言語から操作することができます。
Screenshot 2023-10-26 at 16.39.44.png

パスの指定方法は使用するコマンドによって変わります(これがややこしい)。

PySparkなどの分散ファイルシステム前提のコマンドでは何も変更を加えずにファイルへのパスを指定します。以下の例では明示的にdbfs:スキーマを付与しています。

df = spark.read.format("delta").load('dbfs:/databricks-datasets/learning-spark-v2/people/people-10m.delta')
display(df)

Pandasのようなローカルファイル前提のコマンドでは、パスの先頭に/dbfsを追加します。

import pandas as pd

df = pd.read_csv("/dbfs/databricks-datasets/wine-quality/winequality-red.csv", sep=";")
display(df)

ワークスペースファイルとは

ノートブックと同じ場所でノートブック以外のPythonファイルなどを格納、編集できるようにした機能。元々はRepos限定の機能でしたが、2023/4からワークスペースのどこでも利用できるようになりました。

  • ワークスペース横断でのアクセス: 不可
  • アクセスコントロール: ファイル単位に設定可能
  • ファイルエディタのサポート: 有り
  • ファイルサイズの制限: 200MB
  • 想定用途: Pythonモジュールのインポート、git連携

以下のようにpyファイルを作成します。
Screenshot 2023-10-26 at 16.40.47.png

注意
ワークスペースファイルを作成する際には、ノートブックではなくファイルを作成してください。ノートブックの名称をxxx.pyとしてもワークスペースファイルとしては認識されません。
Screenshot 2023-10-27 at 9.48.27.png

ノートブックから直接importすることができます。
Screenshot 2023-10-26 at 16.41.21.png

ワークスペースファイルのパスの指定方法は以下の通りとなります。どのようなコマンドであってもパスの指定方法は依存しません。

Repos内のファイル

file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file

それ以外の場所のファイル

file:/Workspace/Users/<user-folder>/path/to/file

以下のようにしてアクセスできます。

%sh
head /Workspace/Users/takaaki.yayoi@databricks.com/20231025_volumes/power.py
def n_to_mth(n,m):
  print(n, "の", m, "乗は", n**m)

ボリュームとは

ファイル格納の機能としては最新のものです。2023/7にパブリックプレビュー。

  • ワークスペース横断でのアクセス: 可能
  • アクセスコントロール: ボリューム単位に設定可能
  • ファイルエディタのサポート: 無し
  • ファイルサイズの制限: 無し
  • 想定用途: 大規模ファイルの読み書き
  • その他: Unity Catalogが前提。ボリュームのファイルからテーブルを作成するとリネージを生成

ボリューム上のファイルもカタログエクスプローラから確認できます。
Screenshot 2023-10-26 at 16.43.17.png

ボリューム上のファイルからテーブルを作成すると、リネージも作成されます。

ワークスペースファイルと同じようにPythonからアクセスできます。

パスの指定方法は一番シンプルです。コマンドに関係なく以下の通りとなります。

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

%sh
ls /Volumes/takaakiyayoi_catalog/quickstart_schema/quickstart_volume/catsanddogs/test_set/test_set/cats
_DS_Store
cat.4001.jpg
cat.4002.jpg
cat.4003.jpg
cat.4004.jpg
cat.4005.jpg
cat.4006.jpg
cat.4007.jpg
cat.4008.jpg
cat.4009.jpg
cat.4010.jpg
cat.4011.jpg

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?