Databricksのワークスペースファイルとは何か？

[What are workspace files? \| Databricks on AWS](https://docs.databricks.com/files/workspace.html) [2023/4/21時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

ワークスペースファイルは、DatabricksワークスペースにおけるDatabricksノートブック以外の任意のファイルです。ワークスペースファイルは任意のファイルタイプとなります。一般的な例には以下のようなものがあります:

- カスタムモジュールで使用される`.py`ファイル。
- `README.md`のような`.md`ファイル。
- `.csv`やその他の小規模なデータファイル。
- `.txt`ファイル。
- ログファイル。

Databricksでは、ビルトインファイルエディタをはじめとして、さまざまなワークスペースファイルタイプに対するローカルでの開発と同様の機能を提供します。すべてのファイルタイプに対するすべてのユースケースがサポートされている訳ではありません。例えば、インポートしたディレクトリやリポジトリに画像を含めることはできますが、ノートブックに画像を埋め込むことはできません。

ノートブックとのインタラクションの慣れ親しんだパターンを用いて、ワークスペースファイルの作成、編集、アクセス管理を行うことができます。ローカルでの開発と同じように、ワークスペースファイルからライブラリをインポートするために相対パスを使用することができます。詳細は以下をご覧ください:

- [Workspace files basic usage](https://docs.databricks.com/files/workspace-basics.html)
- [プログラムでDatabricksワークスペースのファイルを操作する](https://qiita.com/taka_yayoi/items/14c74e07f41d4e93ee45)
- [Work with Python and R modules](https://docs.databricks.com/files/workspace-modules.html)
- [Databricksノートブックを管理する](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5)

:::note
**注意**
ワークスペースファイルに格納されたinitスクリプトは特殊な挙動をします。[Store init scripts in workspace files](https://docs.databricks.com/files/workspace-init-scripts.html)をご覧ください。
:::

# ワークスペースファイルの有効化

Databricksランタイム11.2以降ではデフォルトでワークスペースファイルが有効化されます。Files in Repos(Reposにおけるファイルサポート)はDatabricksランタイム11.0以降ではデフォルトで有効化され、手動で無効化、有効化することができます。[Reposにおけるファイルサポートの設定](#reposにおけるファイルサポートの設定)をご覧ください。

Databricksランタイムのバージョンに関係なく、initスクリプトを格納、参照するためにワークスペースファイルを活用することができます。[Store init scripts in workspace files](https://docs.databricks.com/files/workspace-init-scripts.html)をご覧ください。

Databricksランタイム8.4以降では、Databricksリポでノートブック以外のファイルを同期、インポート、読み込みすることができます。また、DatabricksのUIでファイルを参照、編集することができます。

Databricksランタイム11.2以降では、Databricksリポでプログラムからワークスペースファイルを書き込み、削除することができます。

:::note warn
**重要**
Files in Reposの有効化によって、ドライバーでのオペレーションにおける現在の作業ディレクトリは、コードを実行しているノートブックを格納しているディレクトリに変更され、リポ外のノートブックでワークスペースファイルを操作する際には挙動が異なり、デフォルトのカレント作業ディレクトリはドライバーのブロックストレージボリュームとなります。[How to work with files on Databricks](https://docs.databricks.com/files/index.html)をご覧ください。
:::

# Reposにおけるファイルサポートの設定

Databricks Reposでノートブック以外のファイルを操作するには、Databricksランタイム8.4以上が稼働している必要があります。プログラムからワークスペースファイルを作成、削除するにはDatabricksランタイム11.2以降が稼働している必要があります。

Files in Reposのサポートが有効化されていない場合、Databricksレポの非ノートブックファイルは表示されますが、操作することができません。

管理者は以下のようにこの機能を有効化することができます:

1. [admin settings page](https://docs.databricks.com/administration-guide/index.html#admin-settings)に移動します。
1. **Workspace settings**タブをクリックします。
1. **Repos**セクションで、**Files in Repos**ドロップダウンから選択肢を選択します。

すべての設定が適用されていることを確実にするために、ブラウザをリフレッシュし、クラスターを再起動する必要があります。

:::note
**注意**
最初にFiles in Reposを有効化すると、レポの非ノートブックファイルを同期するために[Gitダイアログを開き](https://docs.databricks.com/repos/git-operations-with-repos.html#open-the-git-dialog)、プルオペレーションを実行する必要がある場合があります。マージの競合がある場合には、競合している変更を取り消すか、新たなブランチに変更をプッシュするオプションを提供するダイアログが表示されます。
:::

# Reposでファイルが有効化されていることを確認

Files in Reposが有効化されているかどうかを確認するために、レポ内のノートブックで`%sh pwd`コマンドを活用することができます。

- Files in Reposが有効化されていない場合、レスポンスは`/databricks/driver`となります。
- Files in Reposが有効化されていると、レスポンスは`/Workspace/Repos/<path to notebook directory>`となります。

# Databricksコンテナサービスを使用しているクラスターからReposのファイルへのアクセス

Databricksランタイム11.3以降が稼働しているクラスターでDatabricksコンテナサービス(DCS)を使用していると、デフォルトでFiles in Reposを使用することができます。

dockerfileを設定することで、Databricksランタイム10.4LTSや9.1LTSでDCSのクラスターでReposのファイルにアクセスすることができます。希望するDatabricksランタイムバージョンのdockerfileに関しては以下を参照ください:

- [Dockerfile for DBR 10\.4 LTS](https://github.com/databricks/containers/tree/release-10.4-LTS/experimental/ubuntu/files-in-repos)
- [Dockerfile for DBR 9\.1 LTS](https://github.com/databricks/containers/tree/release-9.1-LTS/experimental/ubuntu/files-in-repos)

[Databricksコンテナサービスによるコンテナのカスタマイズ](https://qiita.com/taka_yayoi/items/506fa9b15fd07fcac141)をご覧ください。

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

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)