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におけるファイルの変更を検証します。