Programmatically interact with Workspace Files | Databricks on AWS [2022/12/21時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricks Reposに格納されている任意のファイルをプログラムで操作することができます。これによって、以下のようなタスクを行えるようになります。
- ノートブックやコードと一緒に小規模なデータファイルを格納する。
- Gitと同期されるディレクトリにログファイルを書き込む。
- 相対パスを用いてモジュールをインポートする。
- 環境設定ファイルを作成、修正する。
- ノートブックから出力を書き込む。
- Tensorboardのようなライブラリの実行結果を書き込む。
Databricksランタイム8.4以降において、Databricks Reposを用いてワークスペースファイル(Workspace File)の読み込み、インポートが可能となります。Databricksランタイム11.2以降において、プログラムからワークスペースファイルを作成、編集、削除することができます。
注意
ワークスペースファイルへの書き込みを無効化するには、環境変数WSFS_ENABLE_WRITE_SUPPORT=false
をクラスターに設定します。詳細は環境変数をご覧ください。
ワークスペースファイルからのデータ読み込み
ノートブックのコードから.csv
、.json
のような小規模なデータファイルからプログラムを用いて読み込みを行うことができます。以下の例では、プロジェクトのrepoのルートからの相対パス/data
に格納されているファイルにクエリーを行うためにPandasを使用しています。
import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df
データファイルの読み込みにSparkを使用することもできます。Sparkには完全修飾パスを指定しなくてはなりません。Reposのファイルでは、パスfile:/Workspace/Repos/<user_folder>/<repo_name>/file
を使用します。
ファイルの隣のドロップダウンメニューから絶対パス、あるいは相対パスをコピーすることができます。
以下の例では、フルパスを取得するためにどのように{os.getcwd()}
を活用しているのかを示しています。
import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")
Databricks上のファイルの詳細に関しては、How to work with files on Databricksをご覧ください。
プログラムによるファイルやディレクトリの作成、更新、削除
Databricksランタイム11.2以降では、Databricks Reposのワークスペースファイルを直接操作することができます。以下の例では、ファイルやディレクトリを作成、操作するために標準的なPythonパッケージを使用しています。
# Create a new directory
os.mkdir('dir1')
# Create a new file and write to it
with open('dir1/new_file.txt', "w") as f:
f.write("new content")
# Append to a file
with open('dir1/new_file.txt', "a") as f:
f.write(" continued")
# Delete a file
os.remove('dir1/new_file.txt')
# Delete a directory
os.rmdir('dir1')