Databricksのリモート開発
ベータ版
リモート開発はベータ版です。
Databricksリモート開発を使用すると、SSH トンネルを使用してIDEsからワークスペースにアクセスし、 Databricksコンピュート上のワークロードを対話的に実行できます。 セットアップは簡単で、環境管理の必要性を排除し、すべてのコードとデータをDatabricks内で安全に保持します。 。
要件
Databricks のサーバレス コンピュートまたは従来のコンピュートに接続するためにリモート開発を使用するには、次のものが必要です。
- ローカルマシンにDatabricks CLIバージョン1.5.0以降がインストールされており、認証が構成済みであること。Databricks CLIをインストールまたは更新するを参照してください。
- 次のいずれか:
- Visual Studio Code バージョン: 1.110.0(Universal) 以上と、Remote - SSH拡張機能 (1.0.46+) がインストールされている必要があります。
- Cursor のバージョン:2.6.11「ユニバーサル」以上。
サーバレスGPUコンピュートに接続するには、AI Runtime機能を有効にする必要があります。AI Runtimeを参照してください。
クラシック (専用、シングルユーザー) コンピュートに接続するには:
- コンピュートは、Databricks Runtime 17.0 以降を実行している必要があります。専用コンピュートの概要を参照してください。
- Unity Catalog有効にする必要があります。
- コンピュート ポリシーが存在する場合、ジョブの実行を禁止してはなりません。
- カスタムコンテナを使用する場合は、
openssh-serverがインストールされている必要があります。
サーバレスコンピュートに接続する
サーバレスコンピュートに接続するには、IDE内のターミナルからdatabricks ssh connectコマンドを実行します。個別のセットアップステップは必要ありません。
databricks ssh connectコマンドの詳細については、sshコマンド・グループを参照してください。
databricks ssh connect
AI Runtimeに接続するには、--acceleratorオプションを使用します。
databricks ssh connect --accelerator=GPU_1xA10
接続後、開発環境のセットアップを完了してください。プロジェクトを開くを参照してください。
サーバレスコンピュートに接続し、Visual Studio Code または Cursor でセッションを開始するには、--ide オプションを使用します。CLI は、ホームワークスペースフォルダーを指す IDE ウィンドウを開きます。
databricks ssh connect --ide=vscode
クラシックコンピュートに接続します
クラシックコンピュートに接続するには、まずSSH接続を設定し、その後、IDEまたはターミナルから接続します。
SSH接続を設定する
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>
IntelliJユーザーの場合、Databricksはセットアップコマンドに--auto-start-cluster=falseを追加し、接続する前にクラスターを手動で起動することを推奨しています。これは、JetBrains IDEs起動時に構成されたすべてのクラスターを開始し、予期しないコンピュート料金が発生する可能性があるためです。
Visual Studio Codeまたはカーソルを使用して接続します
-
Visual Studio Code の場合は、 Remote SSH 拡張機能をインストールしてください。Cursorには、デフォルトでリモートSSH拡張機能が含まれています。
-
IDEのメインメニューで、 [表示] > [コマンドパレット] をクリックします。 「リモートSSH: 設定」 を選択します。または、 [環境設定]: [ユーザー設定を開く (JSON)] を選択して、
settings.json直接変更することもできます。 -
Remote.SSH: デフォルトの拡張機能 (または
settings.jsonのremote.SSH.defaultExtensions) の下に、ms-Python.Pythonとms-toolsai.jupyterを追加します。settings.jsonを変更している場合:JSON"remote.SSH.defaultExtensions": [
"ms-Python.Python",
"ms-toolsai.jupyter"
]
必要に応じて、 Remote.SSH: Connect Timeout の値を増やし(またはsettings.jsonのremote.SSH.connectTimeout )、タイムアウトエラーが発生する可能性をさらに減らしてください。デフォルトのタイムアウト時間は360秒です。
-
コマンドパレットで、 [リモートSSH: ホストに接続] を選択します。
-
ドロップダウンメニューから、最初のステップで設定した接続を選択します。IDE は新しいウィンドウで接続に進みます。
IntelliJ IDEsを使用して接続します
- リモートサーバーのチュートリアルに従って設定を行ってください。
- 新しい接続画面で、以下を入力してください。
- ユーザー名 :
root - ホスト :
<connection-name>
- ユーザー名 :
ターミナルを使用して接続します
ssh <connection-name>
プロジェクトを開く
デフォルトでは、databricks ssh connectコマンドは一時ディレクトリに開きます。ワークスペースファイルにアクセスするには、IDEまたはターミナルからワークスペースディレクトリに移動します。
- Visual Studio Code または Cursor で、コマンド パレット( Cmd/Ctrl+Shift+P )から Open Folder を選択し、
/Workspace/Users/<your-username>に移動します。 - ターミナルウィンドウから、ディレクトリを変更します:
cd /Workspace/Users/<your-username>。
/Workspace 、 /Volumes 、および/dbfsのファイルはクラスターの再起動後も保持されます。 /home 、 /root 、およびその他のローカルパスにあるファイルは一時的なものであり、再起動すると失われます。
コードを実行する(Visual Studio Codeまたはカーソル)
リモート開発を使用してコードを実行するには、Databricks仮想環境が設定されている必要があります。この環境には、すべての組み込みDBRライブラリとコンピュートスコープのライブラリが含まれます。
-
コマンドパレット(**Cmd/Ctrl+Shift+P**)を開き、**Python: インタープリターの選択**を選択します。
-
一覧から
pythonEnv-xxx仮想環境を選択します。表示されない場合:-
IDE内のターミナルから
echo $DATABRICKS_VIRTUAL_ENV実行してください。出力例:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python -
**Python: インタープリターを選択**プロンプトに、完全な出力をインタープリターパスとして貼り付けます。
-
-
新しいターミナルを開くと、仮想環境が自動的に起動します。
-
Jupyterノートブックを実行するには、仮想環境がカーネルとして選択されていることを確認してください。ノートブックの右上にある Select Kernel をクリックします。
標準の 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エグゼキューター ノードに伝播します。 これにより、カスタム依存関係を持つユーザー定義関数(UDF)が可能になります。
その他の例については、 %pipコマンドでライブラリを管理する」を参照してください。
セッションが10分以内に再接続された場合は、ノートブックを再実行する必要はありません。これは、SSH設定で-shutdown-delayを使用して設定できます。
同じクラスター上の複数の SSH セッションが 1 つの仮想環境を共有します。
制限事項
Databricksのリモート開発には、以下の制限事項があります。
- 共有クラスターはサポートされません。
- Visual Studio Codeとリモート開発用のDatabricks拡張機能は、現時点では互換性がなく、併用すべきではありません。
/Workspace、/Volumes、および/dbfsの外側で編集されたファイルは、クラスターの再起動時に失われます。- クラスターごとに許可されるSSH接続数は最大10です。
- 非アクティブなセッションは1時間後に切断される可能性があります。
- リモート開発は、他のリモート環境やDockerコンテナからは使用できません。
- 3つ以上のJupyterノートブックを同時に開いていると、パフォーマンスまたは接続の問題が発生する場合があります。この制限は将来のリリースで対処される予定です。
Databricksノートブックの違い
リモート開発を使用する場合、ノートブックにはいくつかの違いがあります。
- 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ソース「ノートブック」を使用するには:
-
jupyter.interactiveWindow.cellMarker.codeRegexを検索して、次のように設定します。^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\]) -
jupyter.interactiveWindow.cellMarker.defaultを検索して、次のように設定します。# COMMAND ----------
トラブルシューティング
このセクションでは、よくある問題の解決方法に関する情報を提供します。
SSH接続が失敗するか、タイムアウトします
- ワークスペース UI でクラスターが実行されていることを確認します。
- お使いのノートパソコン、ネットワーク、VPNで、送信ポート22が開いていて許可されていることを確認してください。
- SSHのタイムアウト時間を長くしてください。Visual Studio Code またはカーソルを使用した接続を参照してください。
- キーの不一致エラーが発生した場合は、
~/.databricks/ssh-tunnel-keysを削除してdatabricks ssh setupを再実行してください。 - 「リモートホストの識別情報が変更されました」というエラーが発生した場合は、
~/.ssh/known_hostsファイルを確認し、クラスターに関連するエントリを削除してください。 - SSH セッションは 1 時間後に切断される場合があり、1 つのクラスターに対して 10 個を超える SSH 接続を行うことはできません。制限事項を参照してください。
code コマンドが見つかりません
Error: exec: "code": executable file not found in $PATHが表示された場合は、コマンドパレット( Cmd/Ctrl+Shift+P )を開き、 シェル コマンド: Install 'code' コマンド in PATH を選択して、IDEまたはターミナルセッションを再起動してください。
CLI認証エラー
databricks auth loginを使用して、Databricks CLI プロファイルが有効であることを確認してください。- クラスターに対する権限が
CAN MANAGEであることを確認してください。
私のコードは動作しません
- Databricks仮想環境が正しく設定されていることを確認してください。 「コードの実行(Visual Studio Codeまたはカーソル)」を参照してください。
- ipynbノートブックと
*.pyDatabricksノートブックはDatabricksグローバルにアクセスできますが、 Python*.pyファイルはアクセスできません。 Databricksノートブックの違い を参照してください。
クラスターの再起動後にファイルが消えたり、環境がリセットされたりする
/Workspace、/Volumes、および/dbfsマウント内のファイルはクラスターの再起動後も保持されます。/home、/root、およびその他のローカルパスにあるファイルは一時的なものであり、再起動すると失われます。- 永続的な依存関係にはクラスター ライブラリ管理を使用します。 必要に応じて、init スクリプトを使用して再インストールを自動化します。 「init スクリプトとは何ですか?」を参照してください。 。
Windows (WSL) で SSH 設定が失敗する
WSL内ではなく、Windowsで直接databricks ssh setupを実行してください。WindowsのVisual Studio Codeインスタンスは、WSL側で作成されたSSH構成を見つけることができません。
よくある質問
リモート開発はDatabricks Connectとどう違うのですか?
Databricks Connect使用すると、 Spark APIs使用してコードを作成し、ローカルのSparkセッションではなくDatabricksコンピュート上でリモートで実行できます。 Databricks Visual Studio Code拡張機能は、Databricks Connectを使用して、Databricks上のユーザーコードの組み込みデバッグ機能を提供します。
リモート開発では、IDEからワークスペースにアクセスでき、開発環境全体をコンピュート上に移動します — Python、カーネル、およびすべての実行はDatabricks上で行われ、コンピュート リソースに完全にアクセスできます。
私のコードとデータはどのように保護されていますか?
すべてのコードはDatabricksクラウドVPC内で実行されます。 データやコードは、お客様の安全な環境から外部に持ち出されることはありません。SSH通信は完全に暗号化されています。
どのIDEsがサポートされていますか?
Visual Studio Codeとカーソルは正式にサポートされています。SSH機能を備えたIDEであればどれでも互換性がありますが、テスト済みなのはVS CodeとCursorのみです。
Databricksノートブックのすべての機能は IDE から利用できますか?
display() 、 dbutils 、 %sqlなどの一部の機能は、制限付きまたは手動設定で利用できます。Databricksノートブックの違い を参照してください。
SSHトンネルを使用して接続した場合、クラスターは自動的に起動しますか?
はい、ただし、クラスターの起動に要する時間が接続タイムアウト時間よりも長い場合、接続試行は失敗します。これを防ぐには、コマンドパレットから Remote.SSH: Connect Timeout の値を増やす(またはsettings.jsonのremote.SSH.connectTimeoutにする)ことで、タイムアウトエラーが発生する可能性をさらに減らすことができます。
クラスターが稼働しているかどうかを確認するにはどうすればよいですか?
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への接続を参照してください。
リモート開発はプライベートリンクをサポートしていますか?
はい、ただし、ワークスペース管理者はVisual Studio CodeおよびCursor拡張機能のMarketplaceのURLを許可リストに登録する必要があります。お使いのローカルマシンは、インターネットにアクセスできる必要があります。