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: デフォルトの拡張機能 (または
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>
オープンプロジェクト
接続後、コマンドパレットの 「フォルダを開く」 を使用して、 /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 Remote Developmentによって管理されます。
クラスターから外部データベースやサービスに接続できますか?
はい、クラスター ネットワークで送信接続が許可されており、必要なライブラリがある限り、可能です。
追加のIDE拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールすると機能します。 Visual Studio Codeは、デフォルトではリモートホストにローカル拡張機能をインストールしません。拡張機能パネルを開き、リモートホスト上でローカル拡張機能を有効にすることで、手動でインストールできます。Visual Studio Codeでは、特定の拡張機能を常にリモートでインストールするように設定することもできます。Databricksへの接続を参照してください。
リモート開発はプライベートリンクをサポートしていますか?
はい。ただし、ワークスペース管理者は、VS Code およびカーソル拡張機能 Marketplace の URL を許可リストに登録する必要があります。 ユーザーのローカルマシンもインターネットにアクセスできる必要があります。