0
1

More than 1 year has passed since last update.

プログラムでDatabricksワークスペースのファイルを操作する

Last updated at Posted at 2023-01-29

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を使用しています。

Python
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()}を活用しているのかを示しています。

Python
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パッケージを使用しています。

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')

Databricks 無料トライアル

Databricks 無料トライアル

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