ノートブックの依存関係をインストールする
環境 サイドパネルを使用して、 サーバレスノートブックにおけるPythonの依存関係をインストールできます。このパネルは、ノートブックのライブラリ要件を編集、表示、エクスポートするための単一の場所を提供します。 これらの依存関係は、基本環境を使用して追加することも、個別に追加することもできます。
ノートブック以外のタスクについては、「 ノートブック以外のタスクの環境と依存関係を構成する」を参照してください。
PySpark や、サーバレス ノートブックへの依存関係として PySpark をインストールするライブラリはインストールしないでください。これを行うと、セッションが停止し、エラーが発生します。 これが発生した場合は、ライブラリを取り外し、 環境をリセットします。
基本環境を構成する
基本環境とは、ワークスペースファイルまたはUnity Catalogボリュームに格納されたYAMLファイルで、追加の環境依存関係を指定します。基本環境はノートブック間で共有できます。基本環境を構成するには以下を実行します。
-
Python仮想環境の設定を定義するYAMLファイルを作成します。次のYAMLの例は、MLflowプロジェクトの環境仕様に基づいており、いくつかのライブラリ依存関係がある基本環境を定義しています。
YAMLclient: '1'
dependencies:
- --index-url https://pypi.org/simple
- -r "/Workspace/Shared/requirements.txt"
- my-library==6.1
- '/Workspace/Shared/Path/To/simplejson-3.19.3-py3-none-any.whl'
- git+https://github.com/databricks/databricks-cli -
YAML ファイルをワークスペース ファイルとして、または Unity Catalog ボリュームにアップロードします。 「ファイルのインポート」または「Unity Catalog ボリュームへのファイルのアップロード」を参照してください。
-
ノートブックの右側にある [
] ボタンをクリックして、[ 環境 ] サイド パネルを展開します。 このボタンは、ノートブックがサーバレス コンピュートに接続されている場合にのみ表示されます。
-
Base Environment フィールドに、アップロードした YAML ファイルのパスを入力するか、そのファイルに移動して選択します。
-
適用 をクリックします。これにより、ノートブックの仮想環境に依存関係がインストールされ、Python プロセスが再起動されます。
依存関係を個別にインストールすることで、基本環境で指定された依存関係をユーザーが上書きすることができます。
ノートブック環境を構成する
サーバレス コンピュートに接続されたノートブックに依存関係をインストールするには、 Environment サイドパネルを使用します。
- ノートブックの右側にある [
] ボタンをクリックして [環境 ] サイド パネルを展開します。 このボタンは、ノートブックがサーバレス コンピュートに接続されている場合にのみ表示されます。
- [環境バージョン ] ドロップダウンから環境バージョンを選択します。サーバレス環境のバージョンを参照してください。Databricks では、最新のノートブック機能を利用するために、最新バージョンを選択することをお勧めします。
- 「依存関係 」セクションで、「 依存関係の追加 」をクリックし、ライブラリの依存関係のパスをフィールドに入力します。依存関係は、 requirements.txt ファイルで有効な任意の形式で指定できます。
- 適用 をクリックします。これにより、ノートブックの仮想環境に依存関係がインストールされ、Python プロセスが再起動されます。
サーバレス コンピュートを使用するジョブは、ノートブックのコードを実行する前に、ノートブックの環境仕様をインストールします。 つまり、ノートブックをジョブとしてスケジュールするときに依存関係を追加する必要はありません。 「環境と依存関係の構成」を参照してください。
インストールされている依存関係と pip ログを表示する
インストールされている依存関係を表示するには、ノートブックの [環境 ] パネルで [インストール済み ] をクリックします。ノートブック環境の PIP インストール ログは、パネルの下部にある [PIP ログ ] をクリックしても確認できます。
環境をリセットする
ノートブックがサーバレス コンピュートに接続されている場合、 Databricks はノートブックの仮想環境のコンテンツを自動的にキャッシュします。 つまり、通常、既存のノートブックを開くときに、非アクティブなために切断されているノートブックを [ 環境 ] サイド パネルで指定した Python 依存関係を再インストールする必要はありません。
Python 仮想環境のキャッシュは、ジョブにも適用されます。 ジョブが実行されると、必要な依存関係が既に使用可能であるため、その実行で完了したタスクと同じ依存関係のセットを共有するジョブのタスクは高速になります。
サーバレスのジョブで使用されるカスタム Python パッケージの実装を変更する場合は、ジョブが最新の実装を選択できるように、バージョン番号も更新する必要があります。
環境キャッシュをクリアし、サーバレス コンピュートにアタッチされたノートブックの [Environment ] サイド パネルで指定した依存関係の新規インストールを実行するには、[ Apply ] の横にある矢印をクリックし、[ Reset environment ] をクリックします。
コア ノートブックまたは Apache Spark 環境を中断または変更するパッケージをインストールする場合は、仮想環境をリセットします。 ノートブックをサーバレス コンピュートから切り離して再度アタッチしても、必ずしも環境キャッシュ全体がクリアされるわけではありません。 リセット 環境は 、環境 サイドパネルで指定されたすべての依存関係を再インストールするため、リセットする前に問題のあるパッケージが削除されていることを確認してください。
ノートブック以外のタスクの環境と依存関係を構成する
Python script、Python wheel、dbt タスクなど、サポートされている他のタスクの種類の場合、デフォルト環境にはインストールされたPythonライブラリが含まれます。インストールされているライブラリのリストを表示するには、使用しているクライアントバージョンの 「インストールされている Python ライブラリ 」セクションを参照してください。 サーバレス環境のバージョンを参照してください。タスクにインストールされていない Python ライブラリが必要な場合は、 ワークスペース ファイル、Unity Catalog ボリューム、またはパブリック パッケージ リポジトリからライブラリをインストールできます。 タスクを作成または編集するときにライブラリを追加するには:
-
[環境とライブラリ ドロップダウン メニュー] で、
デフォルト 環境の横にある [] をクリックするか、[ + 新しい環境の追加] をクリックします。
-
[環境バージョン ] ドロップダウンから環境バージョンを選択します。サーバレス環境のバージョンを参照してください。Databricks では、最新の機能を利用するために、最新バージョンを選択することをお勧めします。
-
環境の設定 ダイアログで、 + ライブラリの追加 をクリックします。
-
[ライブラリ ] の下のドロップダウン メニューから依存関係のタイプを選択します。
-
ファイル パス テキスト ボックスに、ライブラリへのパスを入力します。
-
ワークスペース ファイル内の Python wheel の場合、パスは絶対パスで、
/Workspace/
で始まる必要があります。 -
Python wheelボリューム内のUnity Catalog の場合、パスは
/Volumes/<catalog>/<schema>/<volume>/<path>.whl
である必要があります。 -
requirements.txt
ファイルの場合は、 PyPi を選択し、-r /path/to/requirements.txt
と入力します。
- 別のライブラリを追加するには、 確認 または + ライブラリの追加 をクリックします。
- タスクを追加する場合は、 タスクの作成 をクリックします。 タスクを編集している場合は、 タスクを保存 をクリックします。
デフォルトの Python パッケージリポジトリを構成する
管理者は、ワークスペース内のプライベートまたは認証済みパッケージリポジトリを、サーバレス ノートブックとサーバレス ジョブの両方のデフォルト pip 設定として設定できます。 これにより、ユーザーは index-url
や extra-index-url
を明示的に定義せずに、内部の Python リポジトリからパッケージをインストールできます。 ただし、これらの値がコードまたはノートブックで指定されている場合は、ワークスペース デフォルトよりも優先されます。
この構成 では、Databricks シークレット を活用して、リポジトリの URL と資格情報を安全に保存および管理します。 管理者は、ワークスペース管理設定ページを使用するか、定義済みのシークレットスコープと Databricks CLI secrets コマンド、または REST APIを使用してセットアップを構成できます。
ワークスペース管理設定ページを使用したセットアップ
ワークスペース管理者は、ワークスペース管理者設定ページを使用して、デフォルト Python パッケージ リポジトリを追加または削除できます。
- ワークスペース管理者として、Databricks ワークスペースにログインします。
- Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
- コンピュート タブをクリックします。
- 「デフォルト・パッケージ・リポジトリ」 の横にある 「管理 」をクリックします。
- (オプション)インデックス URL、追加のインデックス URL、またはカスタム SSL 証明書を追加または削除します。
- [保存 ] をクリックして、変更を保存します。
シークレットの変更または削除は、サーバレス コンピュートをノートブックに再アタッチした後、またはサーバレス ジョブを再実行した後に適用されます。
シークレット CLI または REST API を使用したセットアップ
CLI または REST API を使用してデフォルトの Python パッケージリポジトリを設定するには、事前定義されたシークレットスコープを作成し、アクセス権限を設定してから、パッケージリポジトリのシークレットを追加します。
Predefined シークレットスコープ name
ワークスペース管理者は、事前定義されたキーの下で、指定されたシークレットスコープに、認証トークンとシークレットとともにデフォルト pip インデックス URL または追加のインデックス URL を設定できます。
- シークレットスコープ name:
databricks-package-management
- シークレットキー for index-url:
pip-index-url
- シークレットキー for extra-index-urls:
pip-extra-index-urls
- シークレットキー for SSL certification content:
pip-cert
シークレットスコープを作成する
シークレットスコープは、Databricks CLI secrets コマンドまたは REST APIを使用して作成できます。シークレットスコープを作成したら、すべてのワークスペースユーザーに読み取りアクセス権を付与するようにアクセス制御リストを設定します。 これにより、リポジトリはセキュリティで保護され、個々のユーザーが変更できなくなります。 シークレットスコープでは、事前定義されたシークレットスコープ名 databricks-package-management
を使用する必要があります。
databricks secrets create-scope databricks-package-management
databricks secrets put-acl databricks-package-management admins MANAGE
databricks secrets put-acl databricks-package-management users READ
Python パッケージ リポジトリのシークレットを追加する
事前定義されたシークレットキー名を使用して、 Python パッケージリポジトリの詳細を追加します。3 つのフィールドはすべてオプションです。
# Add index URL.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-index-url", "string_value":"<index-url-value>"}'
# Add extra index URLs. If you have multiple extra index URLs, separate them using white space.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-extra-index-urls", "string_value":"<extra-index-url-1 extra-index-url-2>"}'
# Add cert content. If you want to pip configure a custom SSL certificate, put the cert file content here.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-cert", "string_value":"<cert-content>"}'
プライベートな PyPI リポジトリのシークレットを変更または削除する
PyPI リポジトリのシークレットを変更するには、 put-secret
コマンドを使用します。 PyPI リポジトリのシークレットを削除するには、以下に示すように delete-secret
を使用します。
# delete secret
databricks secrets delete-secret databricks-package-management pip-index-url
databricks secrets delete-secret databricks-package-management pip-extra-index-urls
databricks secrets delete-secret databricks-package-management pip-cert
# delete scope
databricks secrets delete-scope databricks-package-management