Sync local files with remote workspaces in real time | Databricks on AWS [2022/12/21時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
注意
Databricks Labsのdbxはas-isで提供されており、カスタマーテクニカルサポートチャネルを通じて、Databricksによって正式にはサポートされていません。サポート、質問、機能リクエストに関しては、Github上のdatabrickslabs/dbxリポジトリのIssuesページを通じてコミュニケーションすることができます。
Databricks Labsのdbxを活用することで、ご自身のローカル開発マシンにあるファイルの変更をDatabricksワークスペースで対応するファイルにリアルタイムで同期することができます。これらのワークスペースファイルはDBFSあるいはDatabricks Reposに格納することができます。
dbxによるリアルタイムファイル同期(dbx sync
)は、迅速なコード開発シナリオで有用です。例えば、シンタックスのハイライト、スマートなコードコンプリーション、コードリンティング、テスト、デバッグのような生産性を高める機能のためにローカルの統合開発環境(IDE)を活用することができます。そして、更新したコードをワークスペースですぐに実行することができます。
自動化ジョブやIDEでdbx sync
を活用することができます。
dbx sync
の開発ワークフロー
dbx sync
の開発ワークフローには2つあり、DBFSを用いるものとDatabricks Reposを用いるものです。
dbx sync
とDBFSによる典型的な開発ワークフローは:
- DBFSに同期したいファイルを格納するローカルディレクトリを特定します。
- ローカルディレクトリを同期するDBFSのパスを特定します。
- ローカルディレクトリをDBFSパスに同期するために
dbx sync dbfs
を実行します。dbx sync
がローカルディレクトリにおけるファイルの変更の監視をスタートします。 - 必要に応じてローカルディレクトリのファイルを変更します。
dbx sync
がこれらの変更をリアルタイムでDBFSで対応するファイルに適用します。
dbx sync
とDatabricks Reposによる典型的な開発ワークフローは:
- 使用できるリポジトリが無い場合には、Databricks ReposをサポートするGitプロバイダーのリポジトリを作成します。
- Databricksワークスペースにリポジトリをクローンします。
- ローカル開発マシンにリポジトリをクローンします。
- ローカルにクローンされたリポジトリとワークスペースにクローンされたリポジトリを関連づけるために
dbx sync repo
を実行します。dbx sync
がローカルディレクトリにおけるファイルの変更の監視をスタートします。 - 必要に応じてローカルにクローンしたリポジトリのファイルを変更します。
dbx sync
がこれらの変更をリアルタイムでDatabricks Reposで対応するファイルに適用します。 - リポジトリがお使いのGitプロバイダーと同期されるように、ワークスペースにクローンしたリポジトリから定期的にGitプロバイダーにプッシュします。
重要!
dbx sync
はローカル開発マシンからリモートワークスペースに対してファイルの変更を一方向かつリアルタイムの同期のみを実行します。このため、dbx sync
で監視されているファイルをDatabricksワークスペースで開始することはお勧めしません。そのようなワークスペース起源の変更を行う必要がある場合には、以下のことをも実行しなくてはなりません:
- DBFSのファイルを変更した際には、ローカルファイルに対して同じ変更を手動で行ってください。
- Databricks Reposのファイルを変更した場合には、ワークスペースからGitプロバイダーにプッシュしてください。そして、ローカルの開発マシンでは、Gitプロバイダーからこれらの変更をプルしてください。
要件
Databricks Reposでdbx sync
を使う際には、Databricksワークスペースは以下の要件を満たしている必要があります:
- 必須ではありませんが、Gitプロバイダーからクローンしたリポジトリを推奨します。設定されていない場合には、まずワークスペースでワークスペースファイルのサポートを設定する必要があります。
ローカルの開発マシンでは、以下をインストールする必要があります:
-
バージョン3.8以降のPython。Pythonがインストールされているかどうかをチェックするには、ターミナルあるいはPowerShellで
python --version
を実行します。Bashpython --version
注意
ある環境ではpython
ではなくpython3
を使用しなくてはならない場合があります。その場合、本書ではpython
をpython3
で読み替えてください。
-
pip。
pip
がインストールされているかどうか、インストールされているpip
のバージョンをチェックするには、pip --version
あるいはpython -m pip --version
を実行します。Bashpip --version # Or... python -m pip --version
注意
ある環境ではpython
ではなくpython3
を使用しなくてはならない場合があります。その場合、本書ではpython
をpython3
で読み替えてください。
-
バージョン0.8.0以降のdbx。
dbx
がインストールされているかどうか、インストールされているdbx
のバージョンをチェックするには、dbx --version
を実行します。Python Package Index (PyPI)からdbx
をインストールするには、pip install dbx
あるいはpython -m pip install dbx
を実行します。(dbx
にdbx syncが含まれています)Bash# Check whether dbx is installed, and check its version. dbx --version # Install dbx. pip install dbx # Or... python -m pip install dbx
注意
dbx
の詳細は、Databricks Labsのdbxやdbx documentationをご覧ください。
-
Databricks CLI、認証を設定します。
dbx
をインストールする際に自動でDatabricks CLIがインストールされます。以下の場所のいずれか、あるいは両方でローカル開発マシンの認証を設定することができます。- 環境変数
DATABRICKS_HOST
とDATABRICKS_TOKEN
(Databricks CLIバージョン0.8.0以降) -
.databrickscfg
ファイル内の設定プロファイル
dbx
は、これら二つの場所の認証クレディンシャルを検索します。dbx
は最初にマッチしたもののみを使用します。注意
.databrickscfg
ファイルを使用している際、dbx sync
はデフォルトでこのファイルのDEFAULT
という設定プロファイルを参照します。別のプロファイルを使用するには、本書の後半でdbx sync
コマンドを使用する際に--profile
オプションを使用してください。dbx
は.netrcを用いた認証をサポートしていません。 - 環境変数
- Databricks Reposと
dbx sync
を使いたい場合には、Gitプロバイダーのリポジトリのローカルクローンが必須ではありませんが推奨となります。ローカルのクローンを実行する際には、Gitプロバイダーのドキュメントを参照してください。
dbx sync
でDBFSを使う
-
ローカルの開発マシンのターミナル、PowerShellで、DatabricksワークスペースのDBFSと同期したいファイルを格納するディレクトリに移動します。
-
以下のように、ワークスペースのDBFSに同期するローカルディレクトリでdbx syncコマンドを実行します。(カレントディレクトリを表現するドット(
.
)を末尾に記述することを忘れないでください。)Bashdbx sync dbfs --source .
ティップス
別のソースディレクトリを指定するには、ドット(.
)を別のパスに置き換えます。注意
Error: No such command 'sync'
というエラーが表示される場合、お使いのdbx
が古い可能性があります。これを修正するには、pip install --upgrade dbx==<version>
あるいはpython -m pip install --upgrade dbx==version
を実行します。<version>
はdbx
の最新バージョンです。バージョン番号はPyPI webpage for dbxで確認することができます。Bashpip install --upgrade dbx==<version> # Or... python -m pip install --upgrade dbx==version
-
dbx sync
がカレントのローカルディレクトリのファイルと以下のワークスペース上のDBFSパスのファイルとの同期を開始します。dbx sync
は以下のようにTarget base path
の後にDBFSパスを表示することでこれを確認することができます。/tmp/users/<your-Databricks-username>/<local-directory-name>
ティップス
別のユーザー名やDBFSパスを指定するには、dbx sync
を実行する際に、--user
や--dest
オプションを使用します。
-
必要に応じてローカルファイルを変更します。
重要!
dbx sync
による同期が継続されるように、ターミナルやPowerShellは開いたままにしておく必要があります。ターミナルやPowerShellを閉じると、dbx sync
による監視は停止し、同期も停止します。ファイル変更の同期を再開するには、最初から手順を繰り返してください。
- 必要に応じて、ワークスペースのDBFSのパスにおけるファイルの変更を検証します。
dbx sync
でDatabricks Reposを使う
-
ローカルの開発マシンのターミナル、PowerShellで、Gitプロバイダーのリポジトリのクローンを格納するルートディレクトリに移動します。
-
Databricksワークスペースでは、ローカルにクローンされたレポジトリと同期したいDatabricks Repoの名前を特定します。ワークスペースのData Science & EngineeringあるいはMachine LearningのサイドバーのReposをクリックすることでリポジトリの名前を特定することができます。
-
以下のように、ワークスペースのDatabricks Reposにローカルにクローンしたリポジトリを同期するためにdbx syncコマンドを実行します。
<your-repo-name>
をDatabricks Reposのリポジトリの名前で置き換えてください。(カレントディレクトリを表現するドット(.
)を末尾に記述することを忘れないでください。)Bashdbx sync repo -d <your-repo-name> --source .
ティップス
別のソースディレクトリを指定するには、ドット(.
)を別のパスに置き換えます。注意
Error: No such command 'sync'
というエラーが表示される場合、お使いのdbx
が古い可能性があります。これを修正するには、pip install --upgrade dbx==<version>
あるいはpython -m pip install --upgrade dbx==version
を実行します。<version>
はdbx
の最新バージョンです。バージョン番号はPyPI webpage for dbxで確認することができます。Bashpip install --upgrade dbx==<version> # Or... python -m pip install --upgrade dbx==version
-
dbx sync
がカレントのローカルにクローンしたリポジトリのファイルと以下のワークスペース上のDatabricks Reposのファイルとの同期を開始します。dbx sync
は以下のようにTarget base path
の後にDatabricks Reposのパスを表示することでこれを確認することができます。/Repos/<your-Databricks-username>/<your-repo-name>
ティップス
別のユーザー名やリポジトリ名を指定するには、dbx sync
を実行する際に、--user
や--dest-repo
オプションを使用します。
-
必要に応じてローカルファイルを変更します。
重要!
dbx sync
による同期が継続されるように、ターミナルやPowerShellは開いたままにしておく必要があります。ターミナルやPowerShellを閉じると、dbx sync
による監視は停止し、同期も停止します。ファイル変更の同期を再開するには、最初から手順を繰り返してください。
- 必要に応じて、ワークスペースのDatabricks Reposにおけるファイルの変更を検証します。