ノートブックの依存関係をインストールする
[環境] サイド パネルを使用して、サーバーレス ノートブックの 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 プロセスが再起動されます。
ユーザーは、依存関係を個別にインストールして、基本環境で指定されている依存関係をオーバーライドできます。
ノートブック環境を構成する
Environment サイド パネルを使用して、サーバーレス コンピューティングに接続されているノートブックに依存関係をインストールすることもできます。
- ノートブックの右側にある [
] ボタンをクリックして、[環境] サイド パネルを展開します。 このボタンは、ノートブックがサーバーレス コンピューティングに接続されている場合にのみ表示されます。
- [環境バージョン] ドロップダウンから環境バージョンを選択します。 「サーバーレス環境バージョン」を参照してください。 Databricks では、最新バージョンを選択して最新のノートブック機能を入手することをお勧めします。
- [依存関係] セクションの [依存関係の追加] をクリックして、フィールドにライブラリ依存関係のパスを入力します。 requirements.txt ファイルで有効な任意の形式で、依存関係を指定できます。
- [適用] をクリックします。 これにより、ノートブック仮想環境に依存関係がインストールされて、Python プロセスが再起動されます。
Note
サーバーレス コンピューティングを使うジョブでは、ノートブックのコードを実行する前に、ノートブックの環境仕様がインストールされます。 つまり、ノートブックをジョブとしてスケジュールするときに依存関係を追加する必要はありません。 「環境と依存関係を構成する」を参照してください。
インストールされている依存関係と pip ログを表示する
インストールされている依存関係を表示するには、ノートブックの [環境] パネル内で [インストール済み] をクリックします。 ノートブック環境の pip インストール ログは、パネルの下部にある [pip ログ] をクリックしても使用可能です。
環境をリセットする
ノートブックがサーバーレス コンピューティングに接続されている場合、Databricks はノートブックの仮想環境の内容を自動的にキャッシュします。 つまり、既存のノートブックを開くときに、環境 サイド パネルで指定されている Python 依存関係が非アクティブな状態で切断されている場合でも、通常は再インストールする必要はありません。
Python 仮想環境のキャッシュは、ジョブにも適用されます。 ジョブが実行されると、必要な依存関係は既に使用可能であるため、その実行において完了したタスクと同じ依存関係セットを共有するジョブのタスクは高速になります。
Note
サーバーレス上のジョブで使用されるカスタム Python パッケージの実装を変更する場合は、ジョブが最新の実装を取得できるように、そのバージョン番号も更新する必要があります。
環境キャッシュをクリアし、サーバーレス コンピューティングに接続されているノートブックの Environment サイド パネルで指定された依存関係の新しいインストールを実行するには、[適用] の横にある矢印をクリックし、[環境 リセット] をクリックします。
Note
コア ノートブックまたは Apache Spark 環境を中断または変更するパッケージをインストールする場合は、仮想環境をリセットします。 ノートブックをサーバーレス コンピューティングからデタッチして再アタッチしても、環境キャッシュ全体がクリアされるとは限りません。 環境をリセットすると、環境 サイド パネルで指定されているすべての依存関係が再インストールされるため、リセットする前に問題のあるパッケージが削除されていることを確認します。
ノートブック以外のタスクの環境と依存関係を構成する
Python スクリプト、Python wheel、dbt タスクなど、サポートされているその他のタスクの種類の場合は、既定の環境にインストール済みの Python ライブラリが含まれます。 インストールされているライブラリの一覧については、使用しているクライアント バージョンの Installed Python ライブラリ セクションを参照してください。 「サーバーレス環境バージョン」を参照してください。 タスクにインストールされていない Python ライブラリが必要な場合は、ワークスペース ファイル、Unity カタログ ボリューム 、パブリック パッケージ リポジトリからライブラリをインストールできます。 タスクを作成または編集するときにライブラリを追加するには:
[環境とライブラリ] ドロップダウン メニューで、
Edit Icon[既定] 環境の横にある をクリックするか、[+ 新しい環境を追加する] をクリックします。
[環境バージョン] ドロップダウンから環境バージョンを選択します。 「サーバーレス環境バージョン」を参照してください。 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 リポジトリからパッケージをインストールできます。 ただし、これらの値がコード内またはノートブック内に指定されている場合は、ワークスペースの既定値よりも優先されます。
この構成では、リポジトリの URL と資格情報を安全に格納および管理するために、Databricks シークレットを活用します。 管理者は、ワークスペース管理者設定ページを使用する、または定義済みのシークレット スコープと Databricks CLI シークレット コマンドか REST API を使用して、セットアップを構成できます。
ワークスペース管理者設定ページを使用してセットアップする
ワークスペース管理者は、ワークスペース管理者設定ページを使用して、既定の Python パッケージ リポジトリを追加または削除できます。
- ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
- Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] を選択します。
- [コンピューティング] タブをクリックします。
- [既定のパッケージ リポジトリ]の横にある[管理]をクリックします。
- (省略可能) インデックス URL、追加のインデックス URL、またはカスタム SSL 証明書を追加または削除します。
- [保存] をクリックして変更を保存します。
Note
シークレットに対する変更または削除は、サーバーレス コンピューティングをノートブックに再アタッチ、またはサーバーレス ジョブを再実行した後に適用されます。
シークレット CLI または REST API を使用してセットアップする
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 を使用して作成できます。 シークレット スコープを作成したら、すべてのワークスペース ユーザーに読み取りアクセス権を付与するようにアクセス制御リストを構成します。 これにより、リポジトリがセキュリティで引き続き保護されるとともに、個人ユーザーによる変更ができなくなります。 シークレット スコープでは、定義済みのシークレット スコープ名 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