Important
リモート開発は ベータ版です。
Databricks リモート開発を使用すると、ワークスペースにアクセスし、SSH トンネルを使用して IDE から Databricks コンピューティング上のワークロードを対話形式で実行できます。 セットアップが簡単で、環境管理の必要がなくなり、Databricks ワークスペース内のすべてのコードとデータがセキュリティで保護されます。
Requirements
リモート開発を使用して Databricks サーバーレスまたはクラシック コンピューティングに接続するには、次の機能が必要です。
- Databricks CLI バージョン 1.5.0 以降がローカル マシンにインストールされており、認証が構成されていること。 「Databricks CLI のインストールまたは更新」を参照してください。
- 次のいずれかが必要です。
- Visual Studio Codeバージョン: 1.110.0 (ユニバーサル) 以降とリモート - SSH 拡張機能 (1.0.46 以降) がインストールされています。
- カーソルのバージョン: 2.6.11 (ユニバーサル) 以降。
サーバーレス GPU コンピューティングに接続するには、AI ランタイム機能を有効にする必要があります。 AI ランタイムを参照してください。
クラシック (専用、シングル ユーザー) コンピューティングに接続するには:
- コンピューティングで Databricks Runtime 17.0 以降が実行されている必要があります。 専用コンピューティングの概要を参照してください。
- Unity カタログを有効にする必要があります。
- コンピューティング ポリシーが存在する場合は、ジョブの実行を禁止してはなりません。
- カスタム コンテナーを使用する場合は、
openssh-serverがインストールされている必要があります。
サーバーレス コンピューティングに接続する
サーバーレス コンピューティングに接続するには、IDE 内のターミナルから databricks ssh connect コマンドを実行します。 別のセットアップ手順は必要ありません。
databricks ssh connect コマンドの詳細については、コマンド グループssh参照してください。
databricks ssh connect
--accelerator オプションを使用して AI ランタイムに接続します。
databricks ssh connect --accelerator=GPU_1xA10
接続後、開発環境の設定を完了します。 「 プロジェクトを開く」を参照してください。
サーバーレス コンピューティングに接続し、Visual Studio Codeまたは Cursor でセッションを開始するには、--ide オプションを使用します。 CLI によって、ホーム ワークスペース フォルダーを指す IDE ウィンドウが開きます。
databricks ssh connect --ide=vscode
クラシック コンピューティングに接続する
クラシック コンピューティングに接続するには、まず SSH 接続を設定してから、IDE またはターミナルから接続します。
SSH 接続を設定する
Note
SSH 接続の設定は、クラシック コンピューティングに接続している場合にのみ必要です。
まず、 databricks ssh setup コマンドを使用して SSH トンネルを設定します。 接続の名前を指定します。たとえば、 <connection-name> を my-connectionに置き換えます。
databricks ssh setup --name <connection-name>
CLI によって、クラスターを選択するように求められます。
--cluster <cluster-id>で直接指定することもできます。
databricks ssh setup --name <connection-name> --cluster <cluster-id>
Note
IntelliJ ユーザーの場合、Databricks では、接続する前にセットアップ コマンドに --auto-start-cluster=false を追加し、クラスターを手動で起動することをお勧めします。 これは、JetBrains IDE が起動時にすべての構成済みクラスターを開始するためです。これにより、予期しないコンピューティング料金が発生する可能性があります。
Visual Studio Code または Cursor を使用して接続する
Visual Studio Code の場合は、 リモート SSH 拡張機能をインストールします。 カーソルには、既定でリモート SSH 拡張機能が含まれています。
IDE のメイン メニューで、[表示]>[コマンド パレット]をクリックします。 [Remote-SSH: Settings]\(リモート SSH: 設定\) を選択します。 または、[ Preferences: Open User Settings (JSON)] を選択して、
settings.jsonを直接変更します。Remote.SSH: 既定の拡張機能 (または
remote.SSH.defaultExtensionsのsettings.json) で、ms-Python.Pythonとms-toolsai.jupyterを追加します。settings.jsonを変更する場合:"remote.SSH.defaultExtensions": [ "ms-Python.Python", "ms-toolsai.jupyter" ]Note
必要に応じて、Remote.SSH: Connect Timeout (または
remote.SSH.connectTimeoutのsettings.json) の値を大きくして、タイムアウト エラーの可能性をさらに減らします。 既定のタイムアウトは 360 です。コマンド パレットで、[ Remote-SSH: Connect to Host]\(リモート SSH: ホストに接続\) を選択します。
ドロップダウン メニューから、最初の手順で設定した接続を選択します。 IDE は新しいウィンドウで接続を続行します。
IntelliJ IDE を使用して接続する
- リモート サーバーのチュートリアルに従ってセットアップします。
- 新しい接続画面で、次のように入力します。
-
ユーザー名:
root -
ホスト:
<connection-name>
-
ユーザー名:
ターミナルを使用して接続する
ssh <connection-name>
プロジェクトを開く
既定では、 databricks ssh connect コマンドが一時ディレクトリに対して開きます。 ワークスペース ファイルにアクセスするには、IDE またはターミナルからワークスペース ディレクトリに移動します。
- Visual Studio Codeまたはカーソルで、コマンド パレット (Cmd/Ctrl + Shift + P) から [フォルダーを開く] を選択し、
/Workspace/Users/<your-username>に移動します。 - ターミナル ウィンドウから、ディレクトリを変更します:
cd /Workspace/Users/<your-username>。
Note
/Workspace、/Volumes、および/dbfs内のファイルは、クラスターの再起動後も保持されます。
/home、/root、およびその他のローカル パス内のファイルは一時的であり、再起動時に失われます。
コードを実行 (Visual Studio Code または Cursor)
リモート開発を使用してコードを実行するには、Databricks 仮想環境を設定する必要があります。 この環境には、すべての組み込みの DBR ライブラリと コンピューティング スコープ ライブラリが含まれています。
コマンド パレット (Cmd/Ctrl + Shift + P) を開き、[Python: インタープリターの選択] を選択します。
pythonEnv-xxx仮想環境を一覧から選択します。 表示されない場合:IDE 内のターミナルから
echo $DATABRICKS_VIRTUAL_ENVを実行します。出力例:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/pythonPython: インタープリターの選択プロンプトに、完全な出力をインタープリター パスとして貼り付けます。
新しいターミナルを開き、仮想環境が自動的にアクティブ化されます。
Jupyter Notebook を実行するには、仮想環境がカーネルとして選択されていることを確認します。 ノートブックの右上にある [ カーネルの選択 ] をクリックします。
標準のPythonと Jupyter 拡張機能を使用して、Pythonファイルと.ipynbノートブックを実行およびデバッグします。
サーバーレス コンピューティングのPython ファイルで Spark を使用するには、セッションを明示的に初期化します。
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().profile("DEFAULT").getOrCreate()
Python の依存関係を管理する
Python依存関係をクラスター レベルでグローバルに管理するか、ノートブックを使用して個々のプロジェクトにスコープを設定します。
クラスター ライブラリ (推奨)
[コンピューティング > ライブラリ] のワークスペース UI を使用して依存関係をインストールします。 これらはクラスターの再起動間で保持され、 pythonEnv-xxxで使用できます。
クラスター ライブラリを参照してください。
プロジェクト固有のノートブックのセットアップ
プロジェクト スコープの依存関係の場合は、各セッションの開始時に %pip install コマンドを含むノートブックを実行します。
# Install from pyproject.toml
%pip install .
# Install from a requirements file
%pip install -r requirements.txt
# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl
%pip コマンドには、Databricks 固有のガードレールが含まれており、依存関係が Spark Executor ノードに伝達されます。 これにより、カスタム依存関係を持つユーザー定義関数 (UDF) が有効になります。
その他の例については、「%pip コマンドを使用したライブラリの管理」を参照してください。
セッションが 10 分以内に再接続した場合、ノートブックを再実行する必要はありません。 これは、SSH 構成で -shutdown-delay を使用して構成できます。
Note
同じクラスター上の複数の SSH セッションは、1 つの仮想環境を共有します。
制限事項
Databricks リモート開発には、次の制限があります。
- 共有クラスターはサポートされていません。
- Visual Studio Codeおよびリモート開発用の Databricks 拡張機能はまだ互換性がありません。また、一緒に使用しないでください。
-
/Workspace、/Volumes、/dbfsの外部で編集されたファイルは、クラスターの再起動時に失われます。 - クラスターごとに最大 10 個の SSH 接続が許可されます。
- 非アクティブなセッションは、1 時間後に削除される可能性があります。
- リモート開発は、他のリモート環境または Docker コンテナーからは使用できません。
- 3 つ以上の Jupyter ノートブックが同時に開かれていると、パフォーマンスや接続の問題が発生する可能性があります。 この制限は、今後のリリースで対処される予定です。
Databricks Notebook の違い
リモート開発を使用する場合、ノートブックにはいくつかの違いがあります。
- Python ファイルでは、Databricks グローバル (
sparkやdbutilsなど) は定義されません。from databricks.sdk.runtime import sparkを使用して明示的にインポートする必要があります。 - ipynb ノートブックの場合、次の機能を使用できます。
- Databricks グローバル:
display、displayHTML、dbutils、table、sql、udf、getArgument、sc、sqlContext、spark -
%sqlSQL セルを実行するマジック コマンド
- Databricks グローバル:
Python ソースコード「notebooks」を使用するには:
jupyter.interactiveWindow.cellMarker.codeRegexを検索して、それに設定します。^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])jupyter.interactiveWindow.cellMarker.defaultを検索して、それに設定します。# COMMAND ----------
Troubleshooting
このセクションには、一般的な問題の解決に関する情報が含まれています。
SSH 接続が失敗するかタイムアウトする
- ワークスペース UI でクラスターが実行されていることを確認します。
- 送信ポート 22 が開き、ラップトップ、ネットワーク、VPN で許可されていることを確認します。
- SSH タイムアウトを増やします。 Visual Studio Code またはカーソルを使用した接続を参照してください。
- キーの不一致エラーの場合は、
~/.databricks/ssh-tunnel-keysを削除し、databricks ssh setupを再実行します。 - "リモート ホスト ID が変更されました" エラーについては、
~/.ssh/known_hostsファイルを確認し、クラスターに関連するエントリを削除します。 - SSH セッションは 1 時間後に削除される可能性があり、1 つのクラスターに対して 10 を超える SSH 接続を作成することはできません。 制限事項を参照してください。
code コマンドが見つからない
Error: exec: "code": executable file not found in $PATH表示された場合は、コマンド パレット (Cmd/Ctrl + Shift + P) を開き、[シェル コマンド: PATH に 'code' コマンドをインストールする] を選択し、IDE またはターミナル セッションを再起動します。
CLI 認証エラー
-
databricks auth loginを使用して、Databricks CLI プロファイルが有効であることを確認します。 - クラスターに対する
CAN MANAGEアクセス許可があることを確認します。
コードが機能しない
- Databricks の仮想環境が設定されていることを確認してください。Run コード (Visual Studio Code または Cursor) を参照してください。
- IPYNB ノートブックと
*.pyDatabricks ノートブックは Databricks グローバルにアクセスできますが、Python*.pyファイルにはアクセスできません。 Databricks Notebook の違いを参照してください。
クラスターの再起動後にファイルが消えたり、環境がリセットされたりする
-
/Workspace、/Volumes、および/dbfsマウント内のファイルは、クラスターの再起動後も保持されます。/home、/root、およびその他のローカル パス内のファイルは一時的であり、再起動時に失われます。 - 永続的な依存関係にはクラスター ライブラリ管理を使用します。 必要に応じて、init スクリプトを使用して再インストールを自動化します。 「init スクリプトとは」を参照してください。
Windows (WSL) で SSH セットアップが失敗する
WSL 内ではなく、Windows で直接 databricks ssh setup を実行します。 Windows Visual Studio Code インスタンスは、WSL 側で作成された SSH 構成を見つけることができません。
FAQ
リモート開発と Databricks Connect の違い
Databricks Connect を使用すると、Spark API を使用してコードを記述し、ローカルの Spark セッションではなく Databricks コンピューティングでリモートで実行できます。 Databricks Visual Studio Code拡張機能では、Databricks Connect を使用して、Databricks でのユーザー コードの組み込みデバッグが提供されます。
リモート開発を使用すると、IDE からワークスペースにアクセスし、開発環境全体をコンピューティング (Python、カーネル、およびすべての実行は、コンピューティング リソースへのフル アクセスを使用して Databricks 上で実行) に移動できます。
コードとデータはどのように保護されますか?
すべてのコードは、Databricks クラウド VPC 内で実行されます。 セキュリティで保護された環境にデータやコードが残っていません。 SSH トラフィックは完全に暗号化されます。
どの IDE がサポートされていますか?
Visual Studio Codeとカーソルは正式にサポートされています。 SSH 機能を備えた IDE には互換性がありますが、テストされるのは VS Code と Cursor のみです。
すべての Databricks ノートブック機能は IDE から利用できますか?
display()、dbutils、%sqlなどの一部の機能は、制限付きで、または手動で設定できます。
Databricks Notebook の違いを参照してください。
SSH トンネルを使用して接続すると、クラスターは自動的に開始されますか?
はい。ただし、クラスターの起動に接続タイムアウトよりも時間がかかる場合、接続の試行は失敗します。 これを回避するには、コマンド パレット (または のremote.SSH.connectTimeout) から settings.json の値を大きくして、タイムアウト エラーの可能性をさらに減らします。
クラスターが実行されているかどうかを確認するにはどうすればよいですか?
Databricks ワークスペース UI で [コンピューティング ] に移動し、クラスターの状態を確認します。 クラスターには、SSH 接続が機能するために [実行中 ] と表示されている必要があります。
SSH/IDE セッションを切断するにはどうすればよいですか?
セッションを切断するには、IDE ウィンドウを閉じるか、IDE の [切断 ] オプションを使用するか、SSH ターミナルを閉じるか、ターミナルで exit コマンドを実行します。
クラスターを停止し、動作していないときに課金を回避するにはどうすればよいですか?
すぐに停止するには、ワークスペース UI からクラスターを終了します。 Databricks ワークスペース UI で [コンピューティング ] に移動し、クラスターを見つけて、[ 終了 ] または [停止] をクリックします。
ワークスペース UI からクラスターに短い 自動終了 ポリシーを設定します。 切断後、SSH サーバーは shutdown-delay 期間 (既定値: 10 分) を待機し、クラスターのアイドル タイムアウトが適用されます。
永続的な依存関係を処理する方法
セッション中にインストールされた依存関係は、クラスターの再起動後に失われます。 要件とセットアップ スクリプトには永続的ストレージ (/Workspace/Users/<your-username>) を使用します。 自動化には、クラスター ライブラリまたは init スクリプトを使用します。
どのような認証方法がサポートされていますか?
認証では、Databricks CLI と ~/.databrickscfg プロファイル ファイルが使用されます。 SSH キーは、Databricks リモート開発によって処理されます。
クラスターから外部データベースまたはサービスに接続できますか?
はい。クラスター ネットワークで送信接続が許可され、必要なライブラリがある限りです。
追加の IDE 拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールされている場合に機能します。 Visual Studio Code では、既定ではリモート ホストにローカル拡張機能はインストールされません。 拡張機能パネルを開き、リモート ホストでローカル拡張機能を有効にすると、手動でインストールできます。 また、特定の拡張機能を常にリモートでインストールするように Visual Studio Code を構成することもできます。 Databricks への接続を参照してください。
リモート開発はPrivate Linkをサポートしていますか?
はい。ただし、ワークスペース管理者は、Visual Studio Codeおよび Cursor 拡張機能マーケットプレースの URL を許可する必要があります。 ローカル コンピューターには、インターネットにアクセスする機能も必要です。