Microsoft Fabric で Apache Spark ライブラリを管理する
ライブラリは、事前に記述されたコードのコレクションであり、開発者はそれらをインポートして追加の機能を提供することができます。 ライブラリを使用すると、一般的なタスクを実行するために新規にコードを記述する必要がないので、時間と労力を節約できます。 代わりに、ライブラリをインポートし、その関数とクラスを使用して目的の機能を実現できます。 Microsoft Fabric では、ライブラリの管理と使用に役立つ複数のメカニズムが提供されています。
- 組み込みのライブラリ: 各 Fabric Spark ランタイムには、人気のあるプレインストール済みライブラリの豊富なセットが用意されています。 すべての組み込みライブラリの一覧は、Fabric Spark ランタイムに関する記事に記載されています。
- パブリック ライブラリ: パブリック ライブラリは、現在サポートされている PyPI や Conda などのリポジトリから提供されます。
- カスタム ライブラリ: カスタム ライブラリとは、自身または自身の組織がビルドしたコードのことです。 Fabric では、それらは .whl、.jar、および .tar.gz 形式でサポートされています。 R 言語については、Fabric では .tar.gz のみがサポートされています。 Python カスタム ライブラリの場合は、.whl 形式を使用します。
ワークスペース設定でのライブラリ管理
重要
ワークスペース設定でのライブラリ管理はサポートされなくなりました。 ワークスペース ライブラリと Spark プロパティを既定の環境に移行するには、「ワークスペース ライブラリと Spark プロパティを移行する」を参照してください。
ライブラリ管理のベスト プラクティスの概要
次のシナリオでは、ベスト プラクティスについて説明します。
シナリオ 1: 管理者がワークスペースの既定のライブラリを設定する
既定のライブラリを設定するには、ワークスペースの管理者である必要があります。 管理者として、次のタスクを実行できます。
ワークスペース内のノートブックと Spark ジョブ定義は、ワークスペース設定にアタッチされます。 ワークスペースの既定の環境にインストールされているライブラリを使用してセッションを開始します。
シナリオ 2: 1 つまたは複数のコード項目のライブラリ仕様を保持する
ライブラリの仕様を保持する場合、ライブラリを環境にインストールして、コード項目にアタッチします。
このアプローチの利点の 1 つは、常に共通のライブラリが必要なコードを実行する作業を省略できることです。 環境に正常にインストールされると、環境がアタッチされている場合、ライブラリはすべての Spark セッションで有効になります。
もう一つの利点は、このアプローチによってワークスペース レベルよりも低いライブラリ構成の細分性がサポートされていることです。 1 つの環境を複数のコード成果物にアタッチできます。 同じライブラリを必要とするノートブックまたは Spark ジョブ定義のサブセットが 1 つのワークスペースにある場合は、それらを同じ環境にアタッチします。 ワークスペースの管理者、メンバー、共同作成者は、環境を作成、編集、アタッチできます。
シナリオ 3: 対話型実行でのインライン インストール
インストールされていないライブラリの対話型ノートブック内で 1 回限りの使用に関心がある場合は、インライン インストールが最も便利なオプションです。 Fabric のインライン コマンドを使用すると、現在のノートブック Spark セッションでライブラリを有効にできます。 ライブラリは、異なるセッション間では保持されません。
ノートブックを実行するアクセス許可を持つユーザーは、Spark セッションにその他のライブラリをインストールできます。
サポートされるライブラリの種類の概要
ライブラリの種類 | 環境ライブラリ管理 | インライン インストール |
---|---|---|
Python Public (PyPI & Conda) | サポートされています | サポートされています |
Python カスタム (.whl) | サポートされています | サポートされています |
R Public (CRAN) | サポートされていません | サポートされています |
R カスタム (.tar.gz) | サポートされています | サポートされています |
Jar | カスタム ライブラリとしてサポート | サポートされていません |
重要
現在、.jar ライブラリには制限があります。
- Scala ユーザーの場合、.jar ファイルは、環境に正常にインストールできますが、Spark/Scala セッションには有効ではありません。 インストールによって、組み込みライブラリが別のライブラリでオーバーライドされます。 新しい .jar はセッションで動作します。
- Python ユーザーの場合、現在、すべての .jar ファイルは環境ではサポートされていません。 環境に正常にインストールできますが、PySpark セッションでは有効ではありません。
- .jar ファイルは、代わりにノートブック セッション レベルでインストールできます。
インライン インストール
インライン コマンドでは、Python ライブラリと R ライブラリがサポートされます。
Python のインライン インストール
Python インタープリターが再起動され、ライブラリの変更が適用されます。 コマンド セルを実行する前に定義された変数は失われます。 Python パッケージを追加、削除、または更新するすべてのコマンドをノートブックの先頭に配置することを強くお勧めします。
Python ライブラリの管理のインライン コマンドは、既定でノートブック パイプラインの実行で無効になっています。 パイプラインの%pip install
を有効にする場合は、bool パラメーターが True と等しい "_inlineInstallationEnabled" をノートブック アクティビティ パラメーターに追加します。
Note
%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 カスタム ライブラリは、ノートブックにアタッチされているレイクハウスの File フォルダーにアップロードできます。 レイクハウスに移動し、File フォルダーの [...] アイコンを選択して、カスタム ライブラリをアップロードします。
アップロード後、次のコマンドを使用して、カスタム ライブラリをノートブック セッションにインストールできます。
# install the .whl through pip command
%pip install /lakehouse/default/Files/wheel_file_name.whl
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 パスをコピーし、コード内で置き換えることができます。