3
1

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のWorkspace Filesを操作してみる

Last updated at Posted at 2023-01-29

こちらのマニュアルのウォークスルーです。

「ワークスペースのファイル」というと正直「何?」となると思います。一般名詞ではなくWorkspace FilesというDatabricksの機能の一つです。

DatabricksワークスペースとGitリポジトリを同期できるDatabricks Repos(Repositoryの複数形を略してReposです)という機能があるのですが、このRepo(リポジトリ)配下にはノートブック以外にもPythonスクリプトやCSVファイルを格納することができます。これらのファイルをワークスペースファイル(Workpsace File)と呼びます。

リポジトリに格納されているノートブックからこれらのファイルを操作することができます。

データの準備

ワークスペースファイルとして操作するファイルを準備します。ここでは、Databricksサンプルデータセットからファイルをコピーしてワークスペースファイルとします。

まず、リポジトリを作成してノートブックをリポジトリの中に作成します。ここでは、workspace_filesというリポジトリをGitHubで作成し、連携しています。
Screenshot 2023-01-29 at 17.58.56.png
Screenshot 2023-01-29 at 17.59.42.png

リポジトリのノートブックからは、リポジトリにパス/Workspace/Repos/<ユーザー名>/<リポジトリ名>でアクセスすることができます。以下のコマンドを実行してリポジトリにファイルをコピーします。

Shell
%sh
cp /dbfs/databricks-datasets/wine-quality/winequality-red.csv /Workspace/Repos/takaaki.yayoi@databricks.com/workspace_files

すると、リポジトリ配下にCSVファイルが表示されます。
Screenshot 2023-01-29 at 18.00.38.png

なお、CSVファイルをクリックするとエディタに遷移します。
Screenshot 2023-01-29 at 18.01.29.png

データの読み込み

リポジトリにあるファイルはリポジトリにあるノートブックから相対パス、絶対パスを指定して読み込むことができます。

Python
import pandas as pd
df = pd.read_csv("./winequality-red.csv", sep=";")
df

Screenshot 2023-01-29 at 18.04.40.png

Sparkを用いて読み込むことも可能です。Sparkで読み込むにはファイルに対する完全修飾パスが必要なので、os.getcwd()を用いてカレントディレクトリを取得しています。

Python
import os
sdf = spark.read.option("delimiter", ";").option("header", True).format("csv").load(f"file:{os.getcwd()}/winequality-red.csv", )
display(sdf)

Screenshot 2023-01-29 at 18.07.23.png

ディレクトリ・ファイルの操作

os.mkdirでリポジトリ内にディレクトリを作成することができます。

Python
os.mkdir('dir1')

Screenshot 2023-01-29 at 18.12.55.png

テキストファイルを書き込みます。

Python
with open('dir1/new_file.txt', "w") as f:
    f.write("new content")

ファイルが作成されます。
Screenshot 2023-01-29 at 18.15.08.png
Screenshot 2023-01-29 at 18.15.27.png

追記もできます。

Python
with open('dir1/new_file.txt', "a") as f:
    f.write(" continued")

Screenshot 2023-01-29 at 18.16.17.png

ファイル・ディレクトリの削除も同様です。

Python
os.remove('dir1/new_file.txt')
Python
os.rmdir('dir1')

また、カスタムPythonモジュールのimportも可能です。Gitリポジトリと連携しながらファイルを柔軟に取り扱うことができるワークスペースファイル(Workspace Files)、ぜひご活用ください。

Databricks 無料トライアル

Databricks 無料トライアル

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?