こちらのマニュアルのウォークスルーです。
「ワークスペースのファイル」というと正直「何?」となると思います。一般名詞ではなくWorkspace FilesというDatabricksの機能の一つです。
DatabricksワークスペースとGitリポジトリを同期できるDatabricks Repos(Repositoryの複数形を略してReposです)という機能があるのですが、このRepo(リポジトリ)配下にはノートブック以外にもPythonスクリプトやCSVファイルを格納することができます。これらのファイルをワークスペースファイル(Workpsace File)と呼びます。
リポジトリに格納されているノートブックからこれらのファイルを操作することができます。
データの準備
ワークスペースファイルとして操作するファイルを準備します。ここでは、Databricksサンプルデータセットからファイルをコピーしてワークスペースファイルとします。
まず、リポジトリを作成してノートブックをリポジトリの中に作成します。ここでは、workspace_files
というリポジトリをGitHubで作成し、連携しています。
リポジトリのノートブックからは、リポジトリにパス/Workspace/Repos/<ユーザー名>/<リポジトリ名>
でアクセスすることができます。以下のコマンドを実行してリポジトリにファイルをコピーします。
%sh
cp /dbfs/databricks-datasets/wine-quality/winequality-red.csv /Workspace/Repos/takaaki.yayoi@databricks.com/workspace_files
データの読み込み
リポジトリにあるファイルはリポジトリにあるノートブックから相対パス、絶対パスを指定して読み込むことができます。
import pandas as pd
df = pd.read_csv("./winequality-red.csv", sep=";")
df
Sparkを用いて読み込むことも可能です。Sparkで読み込むにはファイルに対する完全修飾パスが必要なので、os.getcwd()
を用いてカレントディレクトリを取得しています。
import os
sdf = spark.read.option("delimiter", ";").option("header", True).format("csv").load(f"file:{os.getcwd()}/winequality-red.csv", )
display(sdf)
ディレクトリ・ファイルの操作
os.mkdir
でリポジトリ内にディレクトリを作成することができます。
os.mkdir('dir1')
テキストファイルを書き込みます。
with open('dir1/new_file.txt', "w") as f:
f.write("new content")
追記もできます。
with open('dir1/new_file.txt', "a") as f:
f.write(" continued")
ファイル・ディレクトリの削除も同様です。
os.remove('dir1/new_file.txt')
os.rmdir('dir1')
また、カスタムPythonモジュールのimportも可能です。Gitリポジトリと連携しながらファイルを柔軟に取り扱うことができるワークスペースファイル(Workspace Files)、ぜひご活用ください。