Databricks リモート開発
ベータ版
リモート開発はベータ版です。
Databricksリモート開発を使用すると、SSH トンネルを使用してIDEsからワークスペースにアクセスし、 Databricksコンピュート上のワークロードを対話的に実行できます。 セットアップは簡単で、環境管理の必要性を排除し、すべてのコードとデータをDatabricks内で安全に保持します。 。
要件
リモート開発を使用するには、次のものが必要です。
- ローカルマシンにDatabricks CLIバージョン0.269以降がインストールされ、認証が設定されている必要があります。インストールを参照してください。
- Databricks Runtime 17.0以降が動作する専用(シングルユーザー)クラスター。専用コンピュートの概要 を参照してください。 加えて:
- Unity Catalog有効にする必要があります。
- コンピュート ポリシーが存在する場合、ジョブの実行を禁止してはなりません。
SSH接続を設定する
まず、 databricksのsshセットアップコマンドを使用して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起動時に構成されたすべてのクラスターを開始し、予期しないコンピュート料金が発生する可能性があるためです。
Databricksに接続する
次に、IDE またはターミナルを使用して Databricks に接続します。
Visual Studio Code またはカーソルを使用して接続する
-
Visual Studio Code の場合は、 Remote SSH 拡張機能をインストールしてください。Cursorには、デフォルトでリモートSSH拡張機能が含まれています。
-
IDE メイン メニューで、 [表示] > [コマンド パレット] をクリックします。 [リモートSSH: 設定] を選択します。または、 [設定: ユーザー設定を開く (JSON)] を選択して、
settings.json直接変更します。 -
Remote.SSH: 無事 Extensions (または
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 です。
-
コマンド パレットで、 Remote-SSH: Connect to Host を 選択します。
-
ドロップダウンメニューから、最初のステップで設定した接続を選択してください。IDEは新しいウィンドウで接続を開始します。
IntelliJ IDEsを使用して接続する
- リモートサーバーのチュートリアルに従って設定を行ってください。
- 新しい接続画面で、以下を入力してください。
- ユーザー名 :
root - ホスト :
<connection-name>
- ユーザー名 :
ターミナルを使用して接続する
ssh <connection-name>
オープンプロジェクト
接続後、コマンドパレットの 「フォルダを開く」 を使用して、 /Workspace/Users/<your-username>に移動します。
/Workspace 、 /Volumes 、および/dbfsのファイルはクラスターの再起動後も保持されます。 /home 、 /root 、およびその他のローカルパスにあるファイルは一時的なものであり、再起動すると失われます。
コードを実行する(Visual Studio Codeまたはカーソル)
リモート開発を使用してコードを実行するには、Databricksの仮想環境が正しく設定されていることを確認する必要があります。この環境には、すべての組み込み DBR ライブラリとコンピュート スコープのライブラリが含まれます。
-
IDE内のターミナルから
echo $DATABRICKS_VIRTUAL_ENV実行してください。出力例:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python -
コマンドパレットを開き、 Python: インタープリタを 選択します。上記の出力結果を貼り付けてください。
-
新しいターミナルを開くと、仮想環境が自動的に起動します。
-
Jupyter ノートブックを実行するには、仮想環境がカーネルとして選択されていることを確認してください。 ノートブックの右上にある 「カーネルを選択」を クリックします。
Pythonファイルと.ipynbノートブックは、標準のPythonおよびJupyter拡張機能を使用して実行およびデバッグできます。
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時間後に削除される場合があります。
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つのクラスターに対して同時に確立できるSSH接続数は10個までです。制限事項を参照してください。
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 設定が失敗する
databricks ssh setup WSL 内ではなく、Windows 上で直接実行してください。Windows版VS 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 キーは Databrick リモート開発によって処理されます。
クラスターから外部データベースまたはサービスに接続できますか?
はい、クラスター ネットワークで送信接続が許可されており、必要なライブラリがある限り可能です。
追加の IDE 拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールすると機能します。Visual Studio Code は、デフォルトではリモート ホストにローカル拡張機能をインストールしません。拡張機能パネルを開いてリモート ホストでローカル拡張機能を有効にすることで、手動でインストールできます。特定の拡張機能を常にリモートでインストールするように Visual Studio Code を構成することもできます。「Databricks への接続」を参照してください。
リモート開発はプライベートリンクをサポートしていますか?
はい。ただし、ワークスペース管理者は、VS Code およびカーソル拡張機能 Marketplace の URL を許可リストに登録する必要があります。 ユーザーのローカルマシンもインターネットにアクセスできる必要があります。