ノートブックの依存関係をインストールする
[環境] サイド パネルを使用して、サーバーレス ノートブックの Python 依存関係をインストールできます。 このパネルには、ノートブックのライブラリ要件を編集、表示、エクスポートするための 1 つの場所が用意されています。 これらの依存関係は、基本環境を使って、または個別に、追加することもできます。
ノートブック以外のタスクについては、「ノートブック以外のタスクの環境と依存関係を構成する」を参照してください。
重要
サーバーレス ノートブックでの依存関係として PySpark または PySpark をインストールするライブラリはインストールしないでください。 これを行うと、セッションが停止しエラーが発生します。 これが発生した場合は、環境をリセットします。
基本環境を構成する
基本環境は、ワークスペース ファイルとして、または Unity Catalog ボリューム上に格納される YAML ファイルであり、環境の追加の依存関係を指定します。 基本環境はノートブック間で共有できます。 基本環境を構成するには:
Python 仮想環境の設定を定義する YAML ファイルを作成します。 次に示す MLflow プロジェクト環境仕様に基づく YAML の例では、いくつかのライブラリ依存関係を持つ基本環境が定義されています。
client: "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 ボリュームにファイルをアップロードする」をご覧ください。
ノートブックの右側にある ボタンをクリックして、[環境] パネルを展開します。 このボタンは、ノートブックがサーバーレス コンピューティングに接続されている場合にのみ表示されます。
[基本環境] フィールドで、アップロードした YAML ファイルのパスを入力するか、ファイルに移動してそれを選びます。
[適用] をクリックします。 これにより、ノートブック仮想環境に依存関係がインストールされて、Python プロセスが再起動されます。
ユーザーは、依存関係を個別にインストールして、基本環境で指定されている依存関係をオーバーライドできます。
ノートブック環境を構成する
[環境] パネルの [依存関係] タブを使って、サーバーレス コンピューティングに接続されているノートブックに依存関係をインストールすることもできます。
- ノートブックの右側にある ボタンをクリックして、[環境] パネルを展開します。 このボタンは、ノートブックがサーバーレス コンピューティングに接続されている場合にのみ表示されます。
- Client バージョンドロップダウンからクライアント イメージを選択します。 Serverless クライアント イメージを参照してください。 Databricks では、最新バージョンを選択して最新のノートブック機能を入手することをお勧めします。
- [依存関係] セクションの [依存関係の追加] をクリックして、フィールドにライブラリ依存関係のパスを入力します。 requirements.txt ファイルで有効な任意の形式で、依存関係を指定できます。
- [適用] をクリックします。 これにより、ノートブック仮想環境に依存関係がインストールされて、Python プロセスが再起動されます。
Note
サーバーレス コンピューティングを使うジョブでは、ノートブックのコードを実行する前に、ノートブックの環境仕様がインストールされます。 つまり、ノートブックをジョブとしてスケジュールするときに依存関係を追加する必要はありません。 「環境と依存関係を構成する」を参照してください。
インストールされている依存関係と pip ログを表示する
インストールされている依存関係を表示するには、ノートブックの [環境] サイド パネルの [インストール済み] をクリックします。 ノートブック環境の pip インストール ログは、パネルの下部にある [pip ログ] をクリックして利用することもできます。
環境をリセットする
ノートブックがサーバーレス コンピューティングに接続されている場合、Databricks はノートブックの仮想環境の内容を自動的にキャッシュします。 つまり、一般に、既存のノートブックを開くときは、非アクティブになったために切断されている場合でも、[環境] パネルで指定されている Python 依存関係を再インストールする必要はありません。
Python 仮想環境のキャッシュは、ジョブにも適用されます。 つまり、必要な依存関係は既に利用できるので、後続のジョブの実行が高速になります。
Note
サーバーレス上のジョブで使用されるカスタム Python パッケージの実装を変更する場合は、ジョブが最新の実装を取得できるように、そのバージョン番号も更新する必要があります。
環境キャッシュをクリアし、サーバーレス コンピューティングにアタッチされているノートブックの [環境] パネルで指定されている依存関係の新規インストールを実行するには、[適用] の横にある矢印をクリックして、[環境のリセット] をクリックします。
Note
コア ノートブックまたは Apache Spark 環境を中断または変更するパッケージをインストールする場合は、仮想環境をリセットします。 ノートブックをサーバーレス コンピューティングからデタッチして再アタッチしても、環境キャッシュ全体がクリアされるとは限りません。
ノートブック以外のタスクの環境と依存関係を構成する
Python スクリプト、Python wheel、dbt タスクなど、サポートされているその他のタスクの種類の場合は、既定の環境にインストール済みの Python ライブラリが含まれます。 インストールされているライブラリの一覧については、使用しているクライアント バージョンの Installed Python ライブラリ セクションを参照してください。 Serverless クライアント イメージを参照してください。 タスクにインストールされていない Python ライブラリが必要な場合は、ワークスペース ファイル、Unity カタログ ボリューム 、パブリック パッケージ リポジトリからライブラリをインストールできます。 タスクを作成または編集するときにライブラリを追加するには:
[環境とライブラリ] ドロップダウン メニューで、[既定] 環境の横にある をクリックするか、[+ 新しい環境を追加する] をクリックします。
Client バージョンドロップダウンからクライアント イメージを選択します。 Serverless クライアント イメージを参照してください。 Databricks では、最新バージョンを選択して最新の機能を利用することをお勧めします。
[環境の構成] ダイアログで、[+ ライブラリの追加] をクリックします。
[ライブラリ] のドロップダウン メニューから依存関係の種類を選びます。
[ファイル パス] テキスト ボックスに、ライブラリへのパスを入力します。
ワークスペース ファイル内の Python Wheel の場合、パスは
/Workspace/
で始まる絶対パスである必要があります。Unity Catalog ボリューム内の Python Wheel の場合、パスは
/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 シークレット コマンド または REST APIを使用してセットアップを構成できます。
既定の Python パッケージ リポジトリを構成するには、定義済みのシークレット スコープを作成し、アクセス許可を構成してから、パッケージ リポジトリ シークレットを追加します。
定義済みのシークレット スコープ名
ワークスペース管理者は、定義済みのキーの下で、既定の pip インデックス URL または追加のインデックス URL を、指定されたシークレット スコープ内の認証トークンとシークレットと共に設定できます。
- シークレット スコープ名:
databricks-package-management
- index-url の秘密鍵:
pip-index-url
- extra-index-urls の秘密鍵:
pip-extra-index-urls
- SSL 認定コンテンツの秘密鍵:
pip-cert
シークレット スコープを作成する
シークレット スコープは、Databricks CLI シークレット コマンド または REST APIを使用して作成できます。 シークレット スコープを作成したら、すべてのワークスペース ユーザーに読み取りアクセス権を付与するように ACL を構成します。 これにより、リポジトリのセキュリティが維持され、個々のユーザーが変更できなくなります。
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 パッケージ リポジトリの詳細を追加します。
# 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
Note
シークレットに対する変更または削除は、ユーザーがサーバーレス コンピューティングをノートブックに再アタッチした後、またはサーバーレス ジョブを再実行した後に適用されます。