Azure DatabricksのSSH(Secure Shell)トンネルは、Visual Studio Code、Cursor、または端末をAzure DatabricksワークスペースやAzure Databricksのサーバーレスコンピュート、AIランタイム、またはクラシックコンピュートに接続します。 これを使用して、ワークスペースのファイルを編集したり、Python スクリプトやノートブックを実行・デバッグしたりできます。Python 環境とコードの実行は、リモート コンピューティング環境上で行われます。 サーバーレスコンピュートに直接接続するか、専用のクラシッククラスターに再利用可能なSSH接続を設定することができます。
Requirements
ローカルマシンからSSH接続を開始してください。 トンネルは他のリモート環境やDockerコンテナから起動することはできません。
サーバーレスやクラシックコンピュートに接続するには、以下の条件が必要です:
- Databricks CLI バージョン 1.5.0 以降がローカル マシンにインストールされており、認証が構成されていること。 インストールされているバージョンを
databricks --versionで確認します。 「Databricks CLI のインストールまたは更新」を参照してください。 - 次のいずれかが必要です。
- Visual Studio Code バージョン 1.110.0 (ユニバーサル) 以上で、Remote - SSH 拡張 (1.0.46+) がインストールされていること。
- Cursorバージョン2.6.11(Universal)以降。
サーバーレスコンピュートに接続するには、サーバーレスコンピュートへのポートフォワーディングを有効にする必要があります。 「サーバーレスコンピュートへのポートフォワーディングを管理する」を参照してください。
サーバーレス GPU コンピューティングに接続するには、AI ランタイム機能を有効にする必要があります。 AI ランタイムを参照してください。
クラシックコンピュートの追加要件
クラシック (専用、シングル ユーザー) コンピューティングに接続するには:
- コンピューティングで Databricks Runtime 17.0 以降が実行されている必要があります。 専用コンピューティングの概要を参照してください。
- Unity カタログを有効にする必要があります。
- コンピューティング ポリシーが存在する場合は、ジョブの実行を禁止してはなりません。
-
専用コンピューティングに Databricks Container Services を使用する場合は、Docker イメージ
openssh-serverインストールされている必要があります。
SSH接続を選択してください
コンピュートタイプに合った接続方法を使用してください:
| Compute | 接続方法 | セットアップ要件 |
|---|---|---|
| サーバーレス コンピューティング | databricks ssh connect |
SSHのセットアップステップは別途ありません。 IDEを起動するには --ide vscode や --ide cursor を追加してください。 |
| AI ランタイム | databricks ssh connect --accelerator <accelerator> |
SSHのセットアップステップは別途ありません。 IDEを起動するには --ide vscode や --ide cursor を追加してください。サポートされたアクセラレータについては --acceleratorを参照してください。 |
| クラシック専用のシングルユーザーコンピュート | ターミナルで databricks ssh setup --name <connection-name> を実行します。その後、IDEからSSHセッションを開始するか、 ssh <connection-name>を実行します。 |
クラシックな計算要件を満たす専用のシングルユーザークラスタを選択してください。 共有クラスターはサポートされていません。 |
Databricks Connectやその他の開発オプションとの比較については、IDE から接続するをご覧ください。
サーバーレス コンピューティングに接続する
上記の要件を満たしたら、端末またはIDEからdatabricks ssh connectを実行してください。
--ide値は、どのエディタやターミナルからコマンドを実行しても、起動するエディタを選択します。
Visual Studio Code
databricks ssh connect --ide vscode
CLIはリモートコンピュートに接続されたVisual Studio Codeウィンドウを開きます。
Cursor
databricks ssh connect --ide cursor
CLIはリモートコンピュートに接続されたCursorウィンドウを開きます。
Terminal
databricks ssh connect
CLIは対話型のSSHセッションを開始します。
コマンドオプション、名前付き接続や認証プロファイルについては、databricks ssh connectを参照してください。
接続後、ワークスペースプロジェクトを開き、Python環境を選択します。 接続が失敗した場合は 、「SSHトンネル接続のトラブルシューティング」を参照してください。
AIランタイム付きのサーバーレスGPUコンピュートに接続
AIランタイムを有効にした状態で、GPU計算を活用するための --accelerator を追加してください:
databricks ssh connect --accelerator GPU_1xA10
databricks ssh connect では、1 つのノードで対話型セッションが提供されます。 長期的なトレーニングジョブやマルチノード分散トレーニングの場合は、 databricks air と一緒にワークロードを提出してください。 「 Data bricks CLIとAIランタイムを使いましょう」を参照してください。
クラシック コンピューティングに接続する
クラシックな専用クラスタへの再利用可能な接続をするには、SSHホスト名を設定し、IDEでそのホストを選択するか、ターミナルから接続してください。
SSH 接続を設定する
注
SSH 接続の設定は、クラシック コンピューティングに接続している場合にのみ必要です。
ローカルマシンで databricks ssh setup を実行してください。
<connection-name> をこの接続の名前 (my-connection など) で置き換えてください:
databricks ssh setup --name <connection-name>
CLIはクラスタを選択するよう促し、SSH設定にホストエントリを追加します。 クラスターを直接選択することもできます。
<cluster-id>を専用クラスタのIDに置き換えてください:
databricks ssh setup --name <connection-name> --cluster <cluster-id>
最後のクライアントが切断された後のSSHトンネルの待ち時間を設定するには、セットアップコマンドに --shutdown-delay を追加してください。 既定では 10 分です。 例えば、このSSHホストエントリを通じた接続に30分の遅延を設定する場合:
databricks ssh setup --name <connection-name> --cluster <cluster-id> --shutdown-delay 30m
注
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" ]注
必要に応じて、Remote.SSH: Connect Timeout (または
remote.SSH.connectTimeoutのsettings.json) の値を大きくして、タイムアウト エラーの可能性をさらに減らします。 既定のタイムアウトは 360 です。コマンド パレットで、[ Remote-SSH: Connect to Host]\(リモート SSH: ホストに接続\) を選択します。
ドロップダウン メニューから、最初の手順で設定した接続を選択します。 IDE は新しいウィンドウで接続を続行します。
IntelliJ IDE を使用して接続する
- リモート サーバーのチュートリアルに従ってセットアップします。
- 新しい接続画面で、次のように入力します。
-
ユーザー名:
root -
ホスト:
<connection-name>
-
ユーザー名:
ターミナルからクラシックコンピュートに接続
databricks ssh setup で構成した接続名を使用します:
ssh <connection-name>
再利用可能なSSHホストエントリなしで直接接続する場合は、CLIを使うこともできます。
<cluster-id>を専用のクラスタIDに置き換えてください:
databricks ssh connect --cluster <cluster-id>
Databricksのssh connectを参照してください。
SSHを通じてワークスペースプロジェクトを開く
既定では、 databricks ssh connect コマンドが一時ディレクトリに対して開きます。 ワークスペース ファイルにアクセスするには、IDE またはターミナルからワークスペース ディレクトリに移動します。
- Visual Studio Codeまたはカーソルで、コマンド パレット (Cmd/Ctrl + Shift + P) から [フォルダーを開く] を選択し、
/Workspace/Users/<your-username>に移動します。 - ターミナル ウィンドウから、ディレクトリを変更します:
cd /Workspace/Users/<your-username>。
注
/Workspace、/Volumes、および/dbfs内のファイルは、クラスターの再起動後も保持されます。
/home、/root、およびその他のローカル パス内のファイルは一時的であり、再起動時に失われます。
SSHセッションでPythonとノートブックを動かしてください
コードを実行する前に、SSHセッションが提供するPython環境を選択してください。 従来のコンピューティングについては、この環境には組み込みの Databricks Runtime ライブラリとコンピューティング スコープのライブラリが含まれています。
コマンド パレット (Cmd/Ctrl + Shift + P) を開き、[Python: インタープリターの選択] を選択します。
pythonEnv-xxx仮想環境を一覧から選択します。--base-environmentフラグを使用してPython依存関係を設定する場合は、オプションの一覧から長い仮想環境名を選択します。 仮想環境が表示されない場合: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()
SSHセッションの依存関係を管理する
計算タイプに対して依存関係管理を選択してください:
- サーバーレスコンピュートの場合は、サポートされているサーバーレス環境バージョンを備えた ワークスペース ベース環境 を使いましょう。
- クラシックコンピュートの場合は、再起動後も持続する依存関係には クラスタライブラリ を使いましょう。
- プロジェクトセッションにスコープをかけた依存関係については、 セットアップノートブックを使いましょう。
非Pythonパッケージについては、Non-Python依存関係を参照してください。
ワークスペースの基本環境 (サーバーレスおよび AI ランタイムに推奨)
注
この機能を使用するには、 ジョブ プレビューでサーバーレス ワークスペースベース環境のサポート を有効にする必要があります。 Manage Azure Databricks プレビューを参照してください。
サーバーレス環境バージョン 4 以下のワークスペース基本環境を使用して、Python依存関係を事前に構成します。 SSHトンネルはサーバーレス環境バージョン5以上では --base-environment をサポートしません。
ワークスペース UI または Databricks CLI databricks 環境 create-workspace-base-environment コマンドを使用して、基本環境を作成します。
接続時に --base-environment オプションを使用して環境を指定します。
databricks ssh connect --base-environment my-workspace-env
--base-environmentオプションは表示名、ワークスペースのYAMLパス、またはリソースIDを受け付けます。 それを--clusterと組み合わせることはできません。
Databricksのssh connectを参照してください。
クラスター ライブラリ (クラシック コンピューティングに推奨)
コンピューティング > ライブラリのワークスペース UI を使用して依存関係をインストールします。 これらはクラスターの再起動間で保持され、 pythonEnv-xxxで使用できます。
クラスター ライブラリを参照してください。
Python以外の依存関係
Python以外の依存関係を保持するには、コンピューティングの開始時にパッケージをインストールする init スクリプトを使用します。 必要に応じて、Unity カタログ ボリュームにパッケージを格納し、init スクリプトからパッケージを参照します。 initスクリプトとは何かについては、を参照してください。。
プロジェクト固有のノートブックのセットアップ
プロジェクト スコープの依存関係の場合は、各セッションの開始時に %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 コマンドを使用したライブラリの管理」を参照してください。
SSHトンネルがシャットダウンする前に再接続すれば、セットアップノートブックを再実行する必要はありません。 デフォルトでは、最後のクライアントが切断されてから10分後にトンネルがシャットダウンします。 この遅延を変更するには、ご利用の接続方法に応じたコマンドで --shutdown-delay を使用します:
- 再利用可能なクラシック コンピューティング接続を設定するには、Databricks SSH セットアップで遅延を設定します。 生成されたSSHホストエントリでは、IDEから接続したり
ssh <connection-name>を実行したりするときに遅延が発生します。 - CLI で直接接続する場合は、databricks ssh connect コマンドを使用して遅延を設定します。
注
同じクラスター上の複数の SSH セッションは、1 つの仮想環境を共有します。
SSHセッションでGitを使います
Important
この機能は パブリック プレビュー段階です。 ワークスペース管理者は、[プレビュー] ページから Git フォルダーの Git CLI サポートへのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。
新しく作成したGitフォルダとAzure Databricksワークスペースで設定したGitの認証情報を使って、SSHトンネル内のGit CLIを使えます。 Git CLI コマンドの使用を参照してください。
CLIが自動的に認証情報を取得するのではなく認証情報を要求する場合は、GitプロバイダーをAzure Databricksに接続する必要があります。 「 Git プロバイダーを Databricks に接続する」を参照してください。
分離したプロセスを稼働させ続けてください
デフォルトでは、SSHトンネルがシャットダウンすると、セッションが開始したすべてのプロセスが停止されます。これには、tmux、setsid、またはnohupでセッションからデタッチしたプロセスも含まれます。 トンネルがそれらを停止させる前に、トンネルはジョブ実行の出力に、それらのプロセス ID を含む警告を記録します。
databricks ssh connect はトンネルを開始するとジョブ実行 ID を出力します。
デタッチ後もスタンドアロンでの処理を継続させるには、--keep-detached-processes フラグを使用してください。 保持したい処理を開始する前に、トンネルを開始する接続に対してフラグを設定してください。 既 存トンネルへの接続を参照してください。
- サーバーレスまたはクラシックコンピュート: フラグを databricks ssh connect に渡します。
- 設定済み SSH ホストのクラシック コンピューティング: フラグを databricks ssh setup に渡してください。 生成された SSH ホスト エントリは、接続するたびに適用されます。 サーバーレス接続はセットアップを必要としないため、このオプションはクラシックコンピュートにのみ適用されます。
以下の例は、サーバーレス コンピューティングでデタッチドプロセスを実行し続けます:
databricks ssh connect --keep-detached-processes
以下は、専用クラスタ上で分離されたプロセスを実行し続ける例です:
databricks ssh connect --cluster 0123-456789-abcdefgh --keep-detached-processes
このフラグを使って最後のクライアントが切断されると、トンネルは次のように振る舞います。
-
--shutdown-delay期間経過後、トンネルはデタッチされたプロセスがないか確認します。 いずれかが実行中は、トンネルは停止せずに動き続けます。 - 分離されたプロセスは
/Workspaceや/Volumesへのアクセスを維持します。 - 最後のデタッチされたプロセスが退出すると、トンネルはシャットダウンし、ジョブ実行は終了します。
トンネルが稼働している間は、同じコンピューティングに再接続し、デタッチされたワークに再アタッチすることができます (tmux attach を使用するなど)。 サーバーレスコンピュートでは、同じ接続名で再接続します。
--nameを省略すると、CLIはワークスペースと--acceleratorおよび--base-environmentフラグから接続名を導出するため、どちらかのフラグを変更すると別の接続が始まります。
既存のトンネルとの接続
トンネルのモードは起動時に固定され、その後の接続で次のように処理されます。
- フラグを付けて、フラグなしで開始されたトンネルに接続すると、CLIは新しいトンネルを開始します。 既存のトンネルで切り離したプロセスは保持されず、そのトンネルが終了すると停止します。 専用クラスタでは、新しいトンネルが既存のトンネルを即座に停止し、既存のトンネルはオープンセッションを終了し、分離されたプロセスも停止します。
- フラグなしでそのフラグ付きで開始されたトンネルに接続すると、CLIはそのトンネルを再利用し、分離されたプロセスが残る間もトンネルは実行され続けます。 これは他のSSHホストエントリやIDEセッションから同じコンピュートへの接続にも当てはまります。
コストと最大寿命
次の点に注意してください。
- トンネルが稼働している間、コンピュートは継続してコストが発生します。 クラシッククラスターは自動的に終了するわけではありません。 アイドル
tmuxセッションは実行中の分離プロセスとしてカウントされるので、不要になったら閉じてください。 - ジョブ実行は、
--server-timeoutで設定された最大寿命に達すると停止します。たとえデタッチされたプロセスが実行中であってもです。 このライフタイムはジョブ実行開始時から計算されており、最後のクライアントが切断された時点から計算されません。 ジョブ実行が停止すると、分離されたプロセスは/Workspaceや/Volumesへのアクセスを失います。 サーバーレス コンピューティングでは、切り離されたプロセスが停止します。 クラシックコンピュートでは、そのアクセスなしでクラスタが終了するまで動作を続けられます。 長時間実行されるデタッチされたジョブの出力を保持するには、/Workspaceや/Volumesのパスに書き込むのではなく、Azure Databricks SDK または REST API を使用して保存してください。 Unity カタログ ボリューム内のファイルの操作を参照してください。 - 長期作業の場合は ジョブ や バンドル を使いましょう。
SSHトンネルの制限
Databricks によって提供される SSH トンネルには、次の制限があります。
- 共有クラスターはサポートされていません。
-
/Workspace、/Volumes、/dbfsの外部で編集されたファイルは、クラスターの再起動時に失われます。 - クラスターごとに最大 10 個の SSH 接続が許可されます。
- 非アクティブなセッションは、1 時間後に削除される可能性があります。
- SSH トンネルは、他のリモート環境または Docker コンテナーから起動できません。
- 3 つ以上の Jupyter ノートブックが同時に開かれていると、パフォーマンスや接続の問題が発生する可能性があります。
SSHセッションにおけるノートブックの挙動
SSH トンネルを使用する場合、ノートブックにはいくつかの違いがあります。
- 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 ----------
SSHトンネル接続のトラブルシューティング
まず、その不具合に該当する症状から確認します:
| 症状: | 最初のチェック |
|---|---|
| SSH接続が失敗したりタイムアウトしたりします。 | ワークスペースのHTTPSとWebSocketへのアクセスを確認してください。 クラシックコンピュートの場合は、クラスターの状態やIDEタイムアウトも確認してください。 SSH 接続が失敗する、またはタイムアウトするを参照してください。 |
CLIは codeを見つけられないと報告しています。 |
ローカルの PATH に Visual Studio Code シェル コマンドをインストールします。 詳細は、codeコマンドが見つからないを参照します。 |
| CLI認証が失敗します。 | CLIプロファイルを確認し、クラシックコンピュートの場合はクラスタ権限を確認します。 CLI 認証エラーを参照してください。 |
CLI は invalid_grant と Refresh token is invalid を報告しています。 |
同じCLIプロファイルで再度ワークスペースにサインインし、再度接続を試してください。 詳細は、更新トークンが無効ですを参照してください。 |
| Pythonのコードやノートブックは接続後に動作しなくなります。 | 選択したインタプリターまたはノートブック カーネルを確認してください。 詳細は、SSH セッション内で Python コードやノートブックが正常に実行されないを参照してください。 |
| クラスター再起動後にファイルが消えます。 | ファイルが一時的なローカルパスに保存されているかどうかを確認してください。 クラスターの再起動後にファイルが消える、または環境がリセットされるをご覧ください。 |
SSH接続が失敗する、またはタイムアウトする
- クラシックコンピュートの場合は、クラスタがワークスペースUIで動作しているか確認してください。
- ネットワーク、VPN、ファイアウォールがワークスペースドメインへのHTTPSやWebSocketトラフィックを許可しているか確認してください。 SSHトンネルはポート22を使用しません。 すべてのトラフィックを他のDatabricksのCLIコマンドと同じHTTPSエンドポイント経由でトンネルします。 ドメイン名ファイアウォール規則の構成に関するセクションを参照してください。
- プロキシやファイアウォールがTLSトラフィックを検査した場合、WebSocketのアップグレードリクエストが許可されているか確認してください。 アップグレードをブロックまたは剥奪する仲介者が接続を失敗またはタイムアウトさせます。ネットワーク管理者に、ワークスペースドメインへのWebSocketアップグレードを許可するか、TLS検査を回避してもらうよう依頼してください。
- 企業のHTTPプロキシ経由で接続する場合は、
HTTPS_PROXY環境変数を設定するか、ワークスペースドメインのプロキシを回避するNO_PROXYを設定してください。 SSHトンネルは他のDatabricksのCLIコマンドと同じプロキシ構成を使用します。 プロキシ サーバーの設定を参照してください。 - ローカルマシンが
github.comやrelease-assets.githubusercontent.comにHTTPSアクセス権を持っているか確認してください。 - SSH タイムアウトを増やします。 Visual Studio Code またはカーソルを使用した接続を参照してください。
- キーの不一致エラーの場合は、
~/.databricks/ssh-tunnel-keysを削除し、databricks ssh setupを再実行します。 - "リモート ホスト ID が変更されました" エラーについては、
~/.ssh/known_hostsファイルを確認し、クラスターに関連するエントリを削除します。 - SSH セッションは 1 時間後に削除される可能性があり、1 つのクラスターに対して 10 を超える SSH 接続を作成することはできません。 SSHトンネルの制限を参照してください。
code コマンドが見つかりません
Error: exec: "code": executable file not found in $PATH表示された場合は、コマンド パレット (Cmd/Ctrl + Shift + P) を開き、[シェル コマンド: PATH に 'code' コマンドをインストールする] を選択し、IDE またはターミナル セッションを再起動します。
CLI認証エラー
- databricks auth login を使用してワークスペースにサインインしてください。
- クラシック コンピューティングの場合は、クラスタに対する
CAN ATTACH TO権限、またはクラスタが実行中でない場合はCAN RESTARTを持っていることを確認してください。
リフレッシュトークンは無効です
databricks ssh connect が error getting token、invalid_grant、Refresh token is invalid で失敗した場合、認証サーバーは CLI に保存されていた OAuth の更新トークンを拒否しています。 新しいセッションを取得するには再度サインインしてください:
接続したいワークスペースの設定プロファイルを特定してください:
databricks auth profiles --skip-validateそのプロフィールで再度サインインしてください。
<workspace-url>をワークスペースの URL (/oidc/v1/tokenのパスは除く) に、<profile-name>を該当するプロファイル名に置き換えます。databricks auth login --host <workspace-url> --profile <profile-name>ブラウザーでサインイン フローを完了します。
同じプロファイルで接続を再試してみてください:
databricks ssh connect --ide vscode --profile <profile-name>カーソルを使用する場合は
--ide cursorを指定し、ターミナルセッションの場合は--ideを省略してください。
エラーが続く場合は、失敗したコマンドが先ほどサインインしたものと同じワークスペースとプロファイルを対象にしているか確認してください。 OAuthユーザー対マシン(U2M)認証を参照してください。
SSH セッション内で Python コードやノートブックが正常に実行されない
- SSHセッションが提供するPython環境を選択してください。 ノートブックの場合は、その環境をカーネルとして選択します。 SSH セッションで Python とノートブックを実行する を参照してください。
- IPYNB ノートブックと
*.pyDatabricks ノートブックは Databricks グローバルにアクセスできますが、Python*.pyファイルにはアクセスできません。 SSH セッションにおけるノートブックの挙動を参照してください。
クラスタ再起動後にファイルが消えたり環境がリセットされたりします
-
/Workspace、/Volumes、および/dbfsマウント内のファイルは、クラスターの再起動後も保持されます。/home、/root、およびその他のローカル パス内のファイルは一時的であり、再起動時に失われます。 - 永続的な依存関係にはクラスター ライブラリ管理を使用します。 必要に応じて、init スクリプトを使用して再インストールを自動化します。 initスクリプトとは何かについては、を参照してください。。
Windows (WSL) で SSH セットアップが失敗する
WSL 内ではなく、Windows で直接 databricks ssh setup を実行します。 Windows Visual Studio Code インスタンスは、WSL 側で作成された SSH 構成を見つけることができません。
FAQ
サーバーレスコンピュートはSSH設定が必要ですか?
No. Databricks CLIをインストールし認証した後、サーバーレス計算のために databricks ssh connect を使いましょう。
databricks ssh setupコマンドは、クラシック専用コンピュート用に再利用可能なSSHホストエントリを設定します。
DatabricksのSSHトンネルはポート22を必要としますか?
No. SSHトンネルはHTTPS経由でワークスペースドメインへのトラフィックを運び、WebSocketのサポートが必要です。 ネットワーク、VPN、ファイアウォール、プロキシはそのトラフィックを許可しなければなりません。 SSH 接続が失敗する、またはタイムアウトするを参照してください。
SSH トンネルと Databricks Connect の違い
Databricks Connect を使用すると、Spark API を使用してコードを記述し、ローカルの Spark セッションではなく Databricks コンピューティングでリモートで実行できます。 Databricks Visual Studio Code拡張機能では、Databricks Connect を使用して、Databricks でのユーザー コードの組み込みデバッグが提供されます。
SSHトンネルを使用するとIDEからワークスペースにアクセスでき、開発環境全体はコンピュート上に移されます。 Python、カーネル、コードの実行は、Azure Databricks上で実行され、コンピューティング リソースにアクセスできます。
コードとデータはどのように保護されますか?
SSHトラフィックはエンドツーエンドで暗号化されており、コードは接続先の Azure Databricks コンピュート上で動作します。 認証はDatabricksのCLIと設定済みのワークスペースプロファイルを使用します。 「サポートされている認証方法は何ですか?」をご覧ください。
どの IDE がサポートされていますか?
Visual Studio Codeとカーソルは正式にサポートされています。 SSH 機能を備えた IDE には互換性がありますが、テストされるのは VS Code と Cursor のみです。
すべての Databricks ノートブック機能は IDE から利用できますか?
display()、dbutils、%sqlなどの一部の機能は、制限付きで、または手動で設定できます。 SSH セッションにおけるノートブックの挙動を参照してください。
SSH トンネルを使用して接続すると、クラスターは自動的に開始されますか?
はい。ただし、クラスターの起動に接続タイムアウトよりも時間がかかる場合、接続の試行は失敗します。 これを回避するには、コマンド パレット (または のremote.SSH.connectTimeout) から settings.json の値を大きくして、タイムアウト エラーの可能性をさらに減らします。
クラスターが実行されているかどうかを確認するにはどうすればよいですか?
Databricks ワークスペース UI で [コンピューティング ] に移動し、クラスターの状態を確認します。 クラスターには、SSH 接続が機能するために [実行中 ] と表示されている必要があります。
SSH/IDE セッションを切断するにはどうすればよいですか?
セッションを切断するには、IDE ウィンドウを閉じるか、IDE の [切断 ] オプションを使用するか、SSH ターミナルを閉じるか、ターミナルで exit コマンドを実行します。
クラスターを停止し、動作していないときに課金を回避するにはどうすればよいですか?
すぐに停止するには、ワークスペース UI からクラスターを終了します。 Databricks ワークスペース UI で [コンピューティング ] に移動し、クラスターを見つけて、[ 終了 ] または [停止] をクリックします。
ワークスペース UI からクラスターに短い 自動終了 ポリシーを設定します。 切断後、SSHトンネルは shutdown-delay の期間が経過するまで待機し、その後クラスターのアイドルタイムアウトが適用されます。
--keep-detached-processesを使うと、デタッチされたプロセスが稼働している間、クラスターが自動的に終了することはありません。 これは、そのフラグを指定せずに、そのフラグを指定して開始されたトンネルを再利用する接続にも当てはまります。 既 存トンネルへの接続を参照してください。
永続的な依存関係を処理する方法
セッション中にインストールされた依存関係は、クラスターの再起動後に失われます。 要件とセットアップ スクリプトには永続的ストレージ (/Workspace/Users/<your-username>) を使用します。 自動化には、クラスター ライブラリまたは init スクリプトを使用します。
どのような認証方法がサポートされていますか?
認証では、Databricks CLI と ~/.databrickscfg プロファイル ファイルが使用されます。 SSH キーは SSH トンネルによって処理されます。
クラスターから外部データベースまたはサービスに接続できますか?
はい。クラスター ネットワークで送信接続が許可され、必要なライブラリがある限りです。
追加の IDE 拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールされている場合に機能します。 Visual Studio Code では、既定ではリモート ホストにローカル拡張機能はインストールされません。 拡張機能パネルを開き、リモート ホストでローカル拡張機能を有効にすると、手動でインストールできます。 また、特定の拡張機能を常にリモートでインストールするように Visual Studio Code を構成することもできます。 Databricks への接続を参照してください。
SSH トンネルはPrivate Linkをサポートしていますか?
はい。ただし、ワークスペース管理者は、Visual Studio Codeおよび Cursor 拡張機能マーケットプレースの URL を許可する必要があります。 ローカル コンピューターには、インターネットにアクセスする機能も必要です。