このページでは、水平方向にスケーリングされた Databricks アプリにプレインストールされているPython ライブラリをオプトアウトし、独自の依存関係を管理し、プレインストールされたライブラリを後でオンに戻す方法について説明します。 オプトアウトは、標準アプリから変換された水平方向にスケーリングされたアプリでのみ使用できます。 水平スケーリングを使用するように標準アプリを変換するを参照してください。 水平スケーリングは ベータ版です。
標準アプリを水平方向にスケーリングに変換すると、Azure Databricksは変換されたアプリを pre-installed Python ライブラリにピン留めして、アプリの既存のインポートが機能し続けます。 クリーンなベース OS イメージでアプリを実行することをオプトアウトし、すべてのライブラリを自分で宣言します。
プレインストールされているライブラリのオプトアウト
オプトアウトすると、クリーンなベース OS イメージに対して次のデプロイをビルドするようにAzure Databricksに指示されます。
プレインストールされたライブラリは、requirements.txtまたはpyproject.tomlで宣言しない限り使用できなくなります。
オプトアウトするには:
- アプリの詳細ページで、[ 編集] をクリックします。
- Configure ステップで、[プレインストールされたPython ライブラリを使用する] チェック ボックスをオフにします。
- 保存 をクリックします。 現在実行中のデプロイは影響を受けません。
- [デプロイ] タブからアプリをもう一度 デプロイ します。この新しいデプロイは、クリーンなベース OS イメージに対してビルドされます。
推奨されるワークフロー
依存関係には、事前にインストールされたライブラリが推移的に含まれる可能性があるため、アプリで直接必要なライブラリが必ずしも明確になるわけではありません。 運用環境でオプトアウトする前に、テスト アプリで不足しているライブラリを見つけます。
- 水平方向にスケーリングされた新しいアプリを作成します。 新しい水平方向にスケーリングされたアプリは、クリーンなベース OS イメージで既に実行されているため、これはオプトアウト後のターゲットと一致します。
- 実稼働アプリのソースをテスト アプリにデプロイします。
requirements.txt(またはpyproject.toml) を更新し、テスト アプリが起動し、要求を処理し、テストに合格するまで再デプロイします。 - 運用アプリのソースに最終的な依存関係宣言をコピーします。
- 実稼働アプリで、「 事前にインストールされているライブラリをオプトアウト し、更新されたソースをデプロイする」の手順に従います。
運用環境では、新しいデプロイが正常性チェックに合格するまで、事前にインストールされたライブラリを使用してイメージ上で実行が続けられます。そのため、テスト アプリに不足している依存関係を特定しながら、ダウンタイムを回避できます。
オプトアウト後にエラーを解決する
オプトアウト後の最も一般的なエラーは、アプリの起動時に ModuleNotFoundError です。これは、プレインストールされたセットから暗黙的にインポートされたコードのフレームワークまたはライブラリが原因です。 これを解決するには次のようにします。
- アプリの詳細ページで [ ログ ] タブを開きます。
- ビルド ログまたはランタイム ログで不足しているモジュール名を見つけます。
- 対応するパッケージを
requirements.txt(またはpyproject.toml) に追加し、再デプロイします。
新しいデプロイでは、起動後の最初の数秒間、アプリ プロセスが実行された状態のままである場合にのみ、実行中のデプロイが置き換えられます。 不足しているインポートですぐにクラッシュするオプトアウトデプロイは引き継がれません。依存関係リストを修正すると、以前の動作中のデプロイでトラフィックが続行されます。 スタートアップ チェックは浅いので、中断されたデプロイをキャッチするためにチェックに依存するのではなく、オプトアウト後にアプリが実際に要求を処理することをテストします。
プレインストール済みライブラリをオンに戻す
オプトアウト後にプレインストール済みライブラリに戻すには:
- アプリの詳細ページで、[ 編集] をクリックします。
- Configure ステップで、[プレインストールされたPython ライブラリを使用する] チェック ボックスをオンにします。
- 保存 をクリックします。
- [デプロイ] タブからアプリをもう一度 デプロイ します。この新しいデプロイは、事前にインストールされたライブラリを使用して基本イメージに対してビルドされます。
requirements.txtとpyproject.tomlは引き続き適用されるため、オプトアウト中に追加した明示的な宣言は保持されます。
Note
水平方向にスケーリングされたアプリ を標準アプリに変換 すると、プレインストールされているライブラリも復元されます。標準アプリは、オプトアウトしたかどうかに関係なく、それらを使用して再構築されます。後でアプリを水平方向にスケールし直す場合は、もう一度オプトアウトするまで、事前にインストールされているライブラリが含まれます。