ライブラリは、PyPI の Python パッケージ、CRAN の R パッケージ、Java JAR などの再利用可能なコード パッケージであり、ノートブックと Spark ジョブ定義にインポートして、ゼロから記述せずに機能を追加できます。 Microsoft Fabric では、ライブラリの管理と使用に役立つ複数のメカニズムが提供されています。
- 組み込みのライブラリ: 各 Fabric Spark ランタイムには、人気のあるプレインストール済みライブラリの豊富なセットが用意されています。 すべての組み込みライブラリの一覧は、Fabric Spark ランタイムに関する記事に記載されています。
- パブリック ライブラリ: パブリック ライブラリは、現在サポートされている PyPI や Conda などのリポジトリから提供されます。
- カスタム ライブラリ: カスタム ライブラリとは、自身または自身の組織がビルドしたコードのことです。 Fabric では、それらは .whl、.jar、および .tar.gz 形式でサポートされています。 R 言語については、Fabric では .tar.gz のみがサポートされています。 Python カスタム ライブラリの場合は、.whl 形式を使用します。
ライブラリ管理のベスト プラクティスの概要
以下のシナリオでは、Microsoft Fabric でライブラリを使うときのベスト プラクティスについて説明します。
環境パブリッシングモード(クイックモードとフルモード)
Fabric 環境にライブラリをインストールする場合は、ライブラリを Spark セッションに配信する方法を制御する発行モードを選択します。
- クイック モード では、約 5 秒で発行されます。 ライブラリは、発行時ではなくノートブック セッションの開始時にインストールされます。 クイック モード パッケージの名前がフル モード パッケージと同じ場合、クイック モード バージョンは、そのセッションのフル モード バージョンのみをオーバーライドします。 クイック モードを使用して、迅速で反復的なノートブック開発と初期段階の実験を行います。
- フル モード では、安定した再現可能なライブラリ スナップショットが作成されます。 システムが依存関係を解決し、互換性を検証するため、発行には通常 3 ~ 6 分かかります。 セッションのスタートアップでは、依存関係のサイズに応じて、依存関係のデプロイに 1 ~ 3 分が追加されます。 一貫性のある再現可能な環境を必要とするパイプライン、スケジュールされた実行、共有ワークロードにはフル モードを使用します。
カスタム ライブ プールを使用したフル モード
フル モードの安定性と高速セッション開始を組み合わせるには、フル モード環境に接続する カスタム ライブ プール を構成します。 ライブ プールは、事前にフル モード ライブラリ スナップショットを使用してクラスターをハイドレートし、再現可能なスナップショットを保持しながら、約 5 秒のセッション開始時刻を有効にします。
各モードの詳細については、 Fabric 環境でのライブラリの管理に関するページを参照してください。
シナリオ 1: 管理者がワークスペースの既定のライブラリを設定する
既定のライブラリを設定するには、ワークスペースの管理者である必要があります。 管理者として、次のタスクを実行できます。
ワークスペースの設定にアタッチされたノートブックと Spark ジョブ定義は、ワークスペースの既定の環境にインストールされたライブラリを使ってセッションを開始します。
シナリオ 2: 1 つまたは複数のコード項目のライブラリ仕様を保持する
コード項目ごとに共通のライブラリがあり、頻繁に更新する必要がない場合は、 環境にライブラリをインストール して コード項目にアタッチします。
発行時間は、選択したモードによって異なります。 クイック モードでは、約 5 秒で発行され、セッション開始時にライブラリがインストールされます。 フル モードでは依存関係が解決され、安定したスナップショットが作成されます。通常、公開には 3 ~ 6 分かかり、セッションのスタートアップでは依存関係のデプロイに 1 分から 3 分かかります。
この方法の利点は、正常にインストールされたライブラリは、接続された環境で Spark セッションが開始されたときに使用可能であることが保証されることです。 プロジェクトの共通ライブラリを維持する手間を省き、安定性のためにパイプライン シナリオに推奨されます。
シナリオ 3: 対話型実行でのインライン インストール
ノートブックで対話形式でコードを記述する場合は、 PyPI または conda ライブラリを追加したり、1 回限りの使用のためにカスタム ライブラリを検証したりするには、インライン インストールが最適な方法です。 インライン コマンドを使用すると、現在のノートブック Spark セッションでのみライブラリを使用できるようになります。これにより、迅速なインストールが可能になりますが、インストールされているライブラリはセッション間で保持されません。
%pip installは実行から実行まで異なる依存関係ツリーを生成できるため、ライブラリの競合につながる可能性があるため、パイプラインの実行ではインライン コマンドが既定でオフになり、パイプラインには推奨されません。
注
インライン コマンド ( %pip install や %conda installなど) を使用してインストールされたライブラリと、ノートブックまたは環境リソース フォルダーから追加されたライブラリは、現在のセッションまたはノートブックにスコープが設定されます。 それらは、クイック モードまたはフル モードで環境を発行しても影響を受けません。
サポートされるライブラリの種類の概要
| ライブラリの種類 | 環境ライブラリ管理 | インライン インストール |
|---|---|---|
| Python パブリック (PyPI および Conda) | サポートされています | サポートされています |
| Python カスタム (.whl) | サポートされています | サポートされています |
| R パブリック (CRAN) | サポートされていません | サポートされています |
| R カスタム版 (.tar.gz) | カスタム ライブラリとしてサポート | サポートされています |
| JARファイル | カスタム ライブラリとしてサポート | サポートされています |
インライン インストール
インライン コマンドを使用すると、個々のノートブック セッション内のライブラリを管理できます。
Python のインライン インストール
システムは Python インタープリターを再起動してライブラリの変更を適用します。 コマンド セルを実行する前に定義された変数は失われます。 Python パッケージを追加、削除、または更新するためのすべてのコマンドを ノートブックの先頭に配置します。
Python ライブラリを管理するためのインライン コマンドは、既定でノートブック パイプラインの実行で無効になっています。 パイプラインの%pip installを有効にするには、ノートブックアクティビティのパラメーターに_inlineInstallationEnabledするように設定されたブール型パラメーターとしてTrueを追加します。
注
%pip install コマンドを実行すると、実行から実行までの一貫性のない結果が生成される可能性があります。 環境にライブラリをインストールし、代わりにパイプラインで環境を使用します。
%pip install コマンドは、高コンカレンシー モードではサポートされていません。
ノートブック参照の実行では、Python ライブラリを管理するためのインライン コマンドはサポートされていません。 正しく実行されるように、参照先のノートブックからこれらのインライン コマンドを削除します。
%pipの代わりに !pip を使用します。
!pip コマンドは IPython 組み込みシェル コマンドであり、次の制限があります。
-
!pipは、Executor ノードではなく、ドライバー ノードにのみパッケージをインストールします。 -
!pipによってインストールされたパッケージは、ノートブックに既にインポートされている組み込みパッケージまたはパッケージとの競合を考慮しません。
%pip は、これらのシナリオを処理します。
%pipによってインストールされたライブラリは、ドライバー ノードと Executor ノードの両方で使用でき、ライブラリが既にインポートされている場合でも有効になります。
ヒント
通常、%conda install コマンドは 、新しい Python ライブラリをインストールする %pip install コマンドよりも時間がかかります。 完全な依存関係をチェックし、競合を解決します。
%conda installを使用して、信頼性と安定性を高めます。 インストールするライブラリがランタイム環境にプレインストールされているライブラリと競合しないことを確認する場合は、 %pip install を使用します。
使用可能なすべての Python インライン コマンドとその説明については、「%pip コマンド」と「%conda コマンド」を参照してください。
インライン インストールを使用して Python パブリック ライブラリを管理する
この例では、インライン コマンドを使用してライブラリを管理する方法を示します。 Python 用の強力な視覚化ライブラリである altair を 1 回限りのデータ探索に使用し、ライブラリがワークスペースにインストールされていないとします。 次の例では、conda コマンドを使用して手順を説明します。
インライン コマンドを使用すると、ノートブックの他のセッションや他のアイテムに影響を与えることなく、ノートブック セッションで altair を有効にすることができます。
ノートブック コード セルで次のコマンドを実行します。 最初のコマンドでは、altair ライブラリをインストールします。 また、視覚化に使用できるセマンティック モデルを含む vega_datasets をインストールします。
%conda install altair # install latest version through conda command %conda install vega_datasets # install latest version through conda commandセルの出力は、インストールの結果を示します。
別のノートブック セルで次のコードを実行することで、パッケージとセマンティック モデルをインポートします。
import altair as alt from vega_datasets import dataこれで、セッション スコープの altair ライブラリを試すことができます。
# load a simple dataset as a pandas DataFrame cars = data.cars() alt.Chart(cars).mark_point().encode( x='Horsepower', y='Miles_per_Gallon', color='Origin', ).interactive()
インライン インストールを使用して Python カスタム ライブラリを管理する
Python カスタム ライブラリは、ノートブックのリソース フォルダーまたはアタッチされた環境にアップロードできます。 resources フォルダーは、各ノートブックと環境によって提供される組み込みのファイル システムです。 詳しくは、「Notebook のリソース」をご覧ください。 ライブラリをアップロードしたら、ライブラリをコード セルにドラッグ アンド ドロップして、インストール コマンドを自動的に生成できます。 または、次のコマンドを実行できます。
# install the .whl through pip command from the notebook built-in folder
%pip install "builtin/wheel_file_name.whl"
注
インライン コマンドを使用して Resources フォルダーからインストールされるカスタム ライブラリは、セッションごとおよびノートブック単位です。 これらは、環境のデプロイの影響を受けません。
R のインライン インストール
R ライブラリを管理するために、Fabric では install.packages()、remove.packages()、および devtools:: コマンドがサポートされています。 使用可能なすべての R インライン コマンドと説明については、「install.packages コマンド」と「remove.package コマンド」を参照してください。
インライン インストールを使用して R パブリック ライブラリを管理する
次の例を使用して、R パブリック ライブラリをインストールする手順について説明します。
R フィード ライブラリをインストールするには:
ノートブック リボンで作業言語を SparkR(R) に切り替えます。
ノートブック セルで次のコマンドを実行して、caesar ライブラリをインストールします。
install.packages("caesar")これで、Spark ジョブでセッション スコープの caesar ライブラリを試すことができます。
library(SparkR) sparkR.session() hello <- function(x) { library(caesar) caesar(x) } spark.lapply(c("hello world", "good morning", "good evening"), hello)
インライン インストールによるJarライブラリの管理
次のコマンド を 使用して、ノートブック セッションに.jar ファイルを追加できます。
%%configure -f
{
"conf": {
"spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
}
}
上記のコード セルでは、lakehouse ストレージを例として使用しています。 ノートブック エクスプローラーでは、ファイルの完全な ABFS パスをコピーし、コード内で置き換えることができます。