dbx syncを用いてローカルファイルをDatabricks Reposに同期する

こちらで説明している`dbx sync`の使用法をウォークスルーします。

https://qiita.com/taka_yayoi/items/f0e2ef2b11c679edb079

ここでは、同期先を[Databricks Repos](https://qiita.com/taka_yayoi/items/b89f199ff0d3a4c16140)、同期元のソースコードはVSCodeで操作します。GitプロバイダーはGitHubです。全体のフローは以下のようになります。`dbx sync`を起動することで、ローカルでのファイルの変更がリアルタイムでDatabricks Reposに同期されます。なお、Gitプロバイダーのリポジトリに対しては別途コミット&プッシュが必要です。
![Screenshot 2023-02-04 at 14.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/76aa94e3-8692-deb0-1424-1dd2e2a9cd5c.png)

[こちら](https://qiita.com/taka_yayoi/items/f0e2ef2b11c679edb079#%E8%A6%81%E4%BB%B6)の手順に従って、dbxの設定を完了しておきます。

# Gitリポジトリの準備

1. Databricks ReposがサポートしているGitプロバイダーでリポジトリを作成します。ここでは`taka-yayoi`というリポジトリとしています。
![Screenshot 2023-02-04 at 14.09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4b36b961-d833-4860-5eaf-bba44080dd13.png)
1. Databricks Reposで上記リポジトリを追加します。
![Screenshot 2023-02-04 at 14.14.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cd167ea0-0cb7-814c-b315-a099f53e2981.png)
1. ローカルマシンでGitリポジトリをクローンします。

# `dbx sync`の起動

1. ターミナルでクローンしたGitリポジトリのルートディレクトリに移動します。
1. 以下のコマンドを実行して`dbx sync`を起動します。

    ```bash:Bash
    dbx sync repo -d taka-yayoi --source .
    ```

    :::note
    **注意**
    `[SSLCertVerificationError: (1, 
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed...`というエラーが出る場合には、[こちら](https://stackoverflow.com/questions/63888000/databricks-cli-sslerror-cant-find-local-issuer-certificate)を参考に`.databrickscfg`ファイルに`insecure = True`を追加してください。
   :::

1. ローカルのディレクトリに対する監視がスタートします。
![Screenshot 2023-02-04 at 14.22.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/134244bd-dcc2-5e19-bab8-4e9fcf60de7e.png)
1. コマンドを停止しない限り、監視と同期は継続されます。

# VSCodeでの操作

1. ローカルマシンでクローンしたGitリポジトリのルートディレクトリでVSCodeを起動します。

    ```bash:Bash
    code .
    ```
    ![Screenshot 2023-02-04 at 14.17.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/04577c31-2d84-b1e5-4579-fdcdeba72a42.png)
1. 新規にファイルを作成して、コードを記述してから保存します。
![Screenshot 2023-02-04 at 14.24.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4c64aeef-667c-bdf5-9fd6-dd3da18b60e9.png)
1. 変更が検知され、Reposにコピーされます。
![Screenshot 2023-02-04 at 14.25.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9c862d29-cdb3-734b-840c-186bd9d91bd5.png)

# Reposでの確認

DatabricksワークスペースでReposにアクセスするとファイルが追加されているのを確認することができます。
![Screenshot 2023-02-04 at 14.26.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b308f425-b93f-365c-b39b-8e42bf65ddbd.png)
![Screenshot 2023-02-04 at 14.27.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/dc4ef4a1-80b6-a5f1-7adc-9d0d8dd45d67.png)

ファイルをクラスターにアタッチすることでコードを実行することも可能です。
![Screenshot 2023-02-04 at 14.39.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b73356a1-8cc8-10a0-ba28-bb2b1bf1f4ab.png)

最後にReposの内容をGitHubにコミット&プッシュしておきます。
![Screenshot 2023-02-04 at 14.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/fcbbc92e-91cd-cc4d-5644-bb1fa748dd53.png)

GitHubリポジトリにも変更が反映されました。
![Screenshot 2023-02-04 at 14.40.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/331ac24b-f6e8-ae64-7476-00fb1851e81c.png)

# まとめ

`dbx sync`を用いることで、IDEの高度な編集機能とDatabricksの計算資源やワークフローの機能をうまく組み合わせることができます。ぜひご活用ください。

### Databricks 無料トライアル

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