0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ローカルのファイルをリモートのDatabricksワークスペースとリアルタイムで同期する

Posted at

Sync local files with remote workspaces in real time | Databricks on AWS [2022/12/21時点]の翻訳です。

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

注意
Databricks Labsdbxはas-isで提供されており、カスタマーテクニカルサポートチャネルを通じて、Databricksによって正式にはサポートされていません。サポート、質問、機能リクエストに関しては、Github上のdatabrickslabs/dbxリポジトリのIssuesページを通じてコミュニケーションすることができます。

Databricks Labsのdbxを活用することで、ご自身のローカル開発マシンにあるファイルの変更をDatabricksワークスペースで対応するファイルにリアルタイムで同期することができます。これらのワークスペースファイルはDBFSあるいはDatabricks Reposに格納することができます。

dbxによるリアルタイムファイル同期(dbx sync)は、迅速なコード開発シナリオで有用です。例えば、シンタックスのハイライト、スマートなコードコンプリーション、コードリンティング、テスト、デバッグのような生産性を高める機能のためにローカルの統合開発環境(IDE)を活用することができます。そして、更新したコードをワークスペースですぐに実行することができます。

自動化ジョブIDEdbx syncを活用することができます。

dbx syncの開発ワークフロー

dbx syncの開発ワークフローには2つあり、DBFSを用いるものとDatabricks Reposを用いるものです。

dbx syncとDBFSによる典型的な開発ワークフローは:

  1. DBFSに同期したいファイルを格納するローカルディレクトリを特定します。
  2. ローカルディレクトリを同期するDBFSのパスを特定します。
  3. ローカルディレクトリをDBFSパスに同期するためにdbx sync dbfsを実行します。dbx syncがローカルディレクトリにおけるファイルの変更の監視をスタートします。
  4. 必要に応じてローカルディレクトリのファイルを変更します。dbx syncがこれらの変更をリアルタイムでDBFSで対応するファイルに適用します。

dbx syncとDatabricks Reposによる典型的な開発ワークフローは:

  1. 使用できるリポジトリが無い場合には、Databricks ReposをサポートするGitプロバイダーのリポジトリを作成します。
  2. Databricksワークスペースにリポジトリをクローンします。
  3. ローカル開発マシンにリポジトリをクローンします。
  4. ローカルにクローンされたリポジトリとワークスペースにクローンされたリポジトリを関連づけるためにdbx sync repoを実行します。dbx syncがローカルディレクトリにおけるファイルの変更の監視をスタートします。
  5. 必要に応じてローカルにクローンしたリポジトリのファイルを変更します。dbx syncがこれらの変更をリアルタイムでDatabricks Reposで対応するファイルに適用します。
  6. リポジトリがお使いのGitプロバイダーと同期されるように、ワークスペースにクローンしたリポジトリから定期的にGitプロバイダーにプッシュします。

重要!
dbx syncはローカル開発マシンからリモートワークスペースに対してファイルの変更を一方向かつリアルタイムの同期のみを実行します。このため、dbx syncで監視されているファイルをDatabricksワークスペースで開始することはお勧めしません。そのようなワークスペース起源の変更を行う必要がある場合には、以下のことをも実行しなくてはなりません:

  • DBFSのファイルを変更した際には、ローカルファイルに対して同じ変更を手動で行ってください。
  • Databricks Reposのファイルを変更した場合には、ワークスペースからGitプロバイダーにプッシュしてください。そして、ローカルの開発マシンでは、Gitプロバイダーからこれらの変更をプルしてください。

要件

Databricks Reposでdbx syncを使う際には、Databricksワークスペースは以下の要件を満たしている必要があります:

ローカルの開発マシンでは、以下をインストールする必要があります:

  • バージョン3.8以降のPython。Pythonがインストールされているかどうかをチェックするには、ターミナルあるいはPowerShellでpython --versionを実行します。

    Bash
    python --version
    

    注意
    ある環境ではpythonではなくpython3を使用しなくてはならない場合があります。その場合、本書ではpythonpython3で読み替えてください。

  • pippipがインストールされているかどうか、インストールされているpipのバージョンをチェックするには、pip --versionあるいはpython -m pip --versionを実行します。

    Bash
    pip --version
    
    # Or...
    
    python -m pip --version
    

    注意
    ある環境ではpythonではなくpython3を使用しなくてはならない場合があります。その場合、本書ではpythonpython3で読み替えてください。

  • バージョン0.8.0以降のdbxdbxがインストールされているかどうか、インストールされているdbxのバージョンをチェックするには、dbx --versionを実行します。Python Package Index (PyPI)からdbxをインストールするには、pip install dbxあるいはpython -m pip install dbxを実行します。(dbxdbx 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のdbxdbx documentationをご覧ください。

  • Databricks CLI認証を設定します。dbxをインストールする際に自動でDatabricks CLIがインストールされます。以下の場所のいずれか、あるいは両方でローカル開発マシンの認証を設定することができます。

    • 環境変数DATABRICKS_HOSTDATABRICKS_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を使う

  1. ローカルの開発マシンのターミナル、PowerShellで、DatabricksワークスペースのDBFSと同期したいファイルを格納するディレクトリに移動します。

  2. 以下のように、ワークスペースのDBFSに同期するローカルディレクトリでdbx syncコマンドを実行します。(カレントディレクトリを表現するドット(.)を末尾に記述することを忘れないでください。)

    Bash
    dbx 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で確認することができます。

    Bash
    pip install --upgrade dbx==<version>    
    # Or...
    python -m pip install --upgrade dbx==version
    
  3. dbx syncがカレントのローカルディレクトリのファイルと以下のワークスペース上のDBFSパスのファイルとの同期を開始します。dbx syncは以下のようにTarget base pathの後にDBFSパスを表示することでこれを確認することができます。

    /tmp/users/<your-Databricks-username>/<local-directory-name>
    

    ティップス
    別のユーザー名やDBFSパスを指定するには、dbx syncを実行する際に、--user--destオプションを使用します。

  1. 必要に応じてローカルファイルを変更します。

    重要!
    dbx syncによる同期が継続されるように、ターミナルやPowerShellは開いたままにしておく必要があります。ターミナルやPowerShellを閉じると、dbx syncによる監視は停止し、同期も停止します。ファイル変更の同期を再開するには、最初から手順を繰り返してください。

  1. 必要に応じて、ワークスペースのDBFSのパスにおけるファイルの変更を検証します。

dbx syncでDatabricks Reposを使う

  1. ローカルの開発マシンのターミナル、PowerShellで、Gitプロバイダーのリポジトリのクローンを格納するルートディレクトリに移動します。

  2. Databricksワークスペースでは、ローカルにクローンされたレポジトリと同期したいDatabricks Repoの名前を特定します。ワークスペースのData Science & EngineeringあるいはMachine LearningのサイドバーのReposをクリックすることでリポジトリの名前を特定することができます。

  3. 以下のように、ワークスペースのDatabricks Reposにローカルにクローンしたリポジトリを同期するためにdbx syncコマンドを実行します。<your-repo-name>をDatabricks Reposのリポジトリの名前で置き換えてください。(カレントディレクトリを表現するドット(.)を末尾に記述することを忘れないでください。)

    Bash
    dbx 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で確認することができます。

    Bash
    pip install --upgrade dbx==<version>    
    # Or...
    python -m pip install --upgrade dbx==version
    
  4. dbx syncがカレントのローカルにクローンしたリポジトリのファイルと以下のワークスペース上のDatabricks Reposのファイルとの同期を開始します。dbx syncは以下のようにTarget base pathの後にDatabricks Reposのパスを表示することでこれを確認することができます。

    /Repos/<your-Databricks-username>/<your-repo-name>
    

    ティップス
    別のユーザー名やリポジトリ名を指定するには、dbx syncを実行する際に、--user--dest-repoオプションを使用します。

  1. 必要に応じてローカルファイルを変更します。

    重要!
    dbx syncによる同期が継続されるように、ターミナルやPowerShellは開いたままにしておく必要があります。ターミナルやPowerShellを閉じると、dbx syncによる監視は停止し、同期も停止します。ファイル変更の同期を再開するには、最初から手順を繰り返してください。

  1. 必要に応じて、ワークスペースのDatabricks Reposにおけるファイルの変更を検証します。

その他のリソース

Databricks 無料トライアル

Databricks 無料トライアル

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?