Azure Synapse Analytics で Apache Spark プール用のライブラリを管理する

Spark アプリケーションで使用または更新したい Scala、Java、R (プレビュー)、または Python パッケージを見つけたら、それらを Spark プールにインストールしたり、そこから削除したりすることができます。 プール レベルのライブラリは、プールで実行されているすべてのノートブックおよびジョブで使用できます。

Spark プールにライブラリをインストールするには、主に次の 2 つの方法があります。

  • ワークスペース パッケージとしてアップロードされたワークスペース ライブラリをインストールします。
  • Python ライブラリを更新する場合は、環境仕様 requirements.txt または Conda environment.yml を指定して、PyPI、Conda-Forge などのリポジトリからパッケージをインストールします。 詳細については、環境仕様に関するセクションを参照してください。

変更が保存された後、Spark ジョブによってインストールが実行され、結果として得られた環境は後で再利用するためにキャッシュされます。 ジョブが完了すると、新しい Spark ジョブまたはノートブック セッションで、更新されたプール ライブラリが使用されます。

重要

  • インストールするパッケージが大きいか、インストールに時間がかかる場合、これは Spark インスタンスのアップタイムに影響します。
  • PySpark、Python、Scala/Java、.NET、R、または Spark のバージョンの変更はサポートされていません。
  • PyPI、Conda-Forge、または既定の Conda チャネルなどの外部リポジトリからパッケージをインストールすることは、データ流出防止対応のワークスペースではサポートされていません。

Synapse Studio または Azure portal からパッケージを管理する

Spark プール ライブラリは、Synapse Studio または Azure portal から管理できます。

Spark プールのライブラリを更新または追加するには:

  1. Azure portal から Azure Synapse Analytics ワークスペースに移動します。

    Azure portal から更新する場合:

    • [Synapse resources](Synapse リソース) セクションで [Apache Spark プール] タブを選択し、一覧から Spark プールを選択します。

    • Spark プールの [設定] セクションから [パッケージ] を選択します。 環境構成ファイルのアップロード ボタンが強調表示されていることを示すスクリーンショット。

    Synapse Studio から更新する場合:

    • メイン ナビゲーション パネルから [管理] を選択し、 [Apache Spark プール] を選択します。

    • 特定の Spark プールの [パッケージ] セクションを選択します。 ライブラリ インストールのログが強調表示されているスクリーンショット。

  2. Python フィード ライブラリの場合、ページの [パッケージ] セクションにあるファイル セレクターを使用して、環境構成ファイルをアップロードします。

  3. 追加のワークスペース パッケージを選択して、Jar、Wheel、または Tar.gz ファイルをプールに追加することもできます。

  4. 非推奨のパッケージを [Workspace packages] (ワークスペース パッケージ) セクションから削除することもできます。以後、それらのパッケージはプールにアタッチされません。

  5. 変更内容を保存すると、システム ジョブがトリガーされ、指定したライブラリがインストールおよびキャッシュされます。 このプロセスにより、セッションの全体的な起動時間を短縮できます。

  6. ジョブが正常に完了すると、すべての新しいセッションで、更新されたプール ライブラリが取得されます。

重要

[Force new settings](新しい設定を強制) オプションを選択すると、選択した Spark プールの現在のすべてのセッションが終了します。 セッションが終了したら、プールが再起動するまで待機する必要があります。

この設定をオフにした場合は、現在の Spark セッションが終了するまで待つか、手動で停止する必要があります。 セッションが終了したら、プールが再起動されるようにする必要があります。

インストールの進行状況の追跡

システム予約 Spark ジョブは、新しい一連のライブラリを使用してプールが更新されるたびに開始されます。 この Spark ジョブは、ライブラリのインストールの状態を監視するために役立ちます。 ライブラリの競合またはその他の問題のためインストールが失敗した場合、Spark プールは以前の、または既定の状態に戻ります。

さらに、ユーザーはインストール ログを調査することで、依存関係の競合を特定したり、プールの更新中にインストールされたライブラリを確認したりすることもできます。

これらのログを表示するには:

  1. [監視] タブで、Spark アプリケーションの一覧に移動します。
  2. プールの更新に対応するシステム Spark アプリケーション ジョブを選択します。 これらのシステム ジョブは、SystemReservedJob-LibraryManagement というタイトルの下で実行されています。 システム予約済みライブラリ ジョブが強調表示されているスクリーンショット。
  3. driver および stdout ログを表示するように切り替えます。
  4. この結果の中に、依存関係のインストールに関連するログが表示されます。 システム予約済みライブラリ ジョブの結果が強調表示されているスクリーンショット。

環境仕様の形式

PIP requirements.txt

requirements.txt ファイル (pip freeze コマンドからの出力) を使用して、環境をアップグレードできます。 プールが更新されると、このファイルに記載されているパッケージが PyPI からダウンロードされます。 その後、完全な依存関係がキャッシュされ、後でプールを再利用するために保存されます。

次のスニペットは、要件ファイルの形式を示しています。 PyPI パッケージ名が正確なバージョンと共にリストされます。 このファイルは、pip freeze のリファレンス ドキュメントで説明されている形式に従います。

この例では、特定のバージョンを固定しています。

absl-py==0.7.0
adal==1.2.1
alabaster==0.7.10

YML 形式

さらに、environment.yml ファイルを指定してプール環境を更新することもできます。 このファイルに記載されているパッケージが、既定の Conda チャネル、Conda-Forge、PyPI からダウンロードされます。 構成オプションを使用して、他のチャネルを指定したり、既定のチャネルを削除したりできます。

この例では、チャネルと Conda/PyPI の依存関係を指定します。

name: stats2
channels:
- defaults
dependencies:
- bokeh
- numpy
- pip:
  - matplotlib
  - koalas==1.7.0

この environment.yml ファイルから環境を作成する方法の詳細については、environment.yml ファイルからの環境の作成に関するページを参照してください。

次のステップ