フェーズ 2: Spark ワークロードの移行

この記事は、Azure Synapse Spark から Microsoft Fabric への移行に関するベスト プラクティス シリーズの第2フェーズ(全4フェーズ)です。

この記事を使用して、Spark ワークロードを Azure Synapse から Microsoft Fabric に移行します。 この記事では、Migration Assistantの実行、自動的に変換できないコード パターンのリファクタリング、および Spark プールの構成、環境、およびライブラリの移行について説明します。

この記事では、次の方法について説明します。

  • 標準 (Git 以外) および Git 対応 Synapse ワークスペースの移行ワークフローについて説明します。
  • Spark Migration Assistantを使用して、ノートブック、Spark ジョブ定義、プールを移行します。
  • Fabric互換性のために Synapse 固有のコード パターンをリファクタリングします。
  • Spark プールの設定、環境、およびライブラリを移行します。
  • Synapse と Fabric の間のライブラリの互換性ギャップを特定して解決します。

Migration Assistantを使用して移行する

Spark Migration Assistantでは、ノートブック、Spark ジョブ定義、プール、およびレイク データベース メタデータの Synapse から Fabric への移行が自動化されます。 アシスタントはアイテムをコピーして変換しますが、移行は完了しません。コードをリファクタリングし、構成のギャップを調整し、結果を検証する必要があります。

アシスタントの実行手順については、Spark Synapse to Fabric Spark Migration Assistant (プレビュー)を参照してください。

アシスタントは、次の項目を移行します。

  • Spark プールは、Fabric プールとそれに対応する環境成果物に移行されます。
  • ノートブックとそれに関連付けられている環境が移行されます。
  • Spark ジョブ定義は、関連付けられている環境と共に移行されます。
  • Lake データベースは、Fabric スキーマにマップされます。マネージド Delta テーブルは、OneLake カタログ ショートカットを使用して移行されます。

Important

Spark 構成、カスタム ライブラリ、カスタム Executor 設定は、アシスタントによって移行されません。 これらは、Fabric環境で手動で構成する必要があります。 VNet の下の Synapse ワークスペースをアシスタントと共に移行することはできません。

標準 (Git 以外) ワークスペースの移行

ノートブックと SSD が (Git リポジトリではなく) Synapse に直接格納されるワークスペースの場合:

  1. Fabric ワークスペース (Migrate>Data engineering items) から Spark Migration Assistantを実行します。 ソース Synapse ワークスペースを選択し、すべての Spark 項目を移行します。

  2. 依存関係を検証する: 同じ Spark バージョンが使用されていることを確認します。 ノートブックが mssparkutils.notebook.run()を介して他のノートブックを参照している場合は、それらのノートブックも移行されたことを確認します。 Migration Assistantはフォルダー構造を保持します (Fabricは最大 10 レベルの入れ子をサポートします)。

  3. コードのリファクタリング: mssparkutilsnotebookutils に置き換え、リンクされたサービス参照を Fabric Connections に置き換え、ファイル パスを更新します。 詳細については、「 Spark コードのリファクタリング 」セクションを参照してください。

Git 対応ワークスペースの移行

ノートブックと SSD が Azure DevOps または GitHub リポジトリに格納されているワークスペースの場合は、Synapse と Fabricで異なる Git シリアル化形式が使用されることに注意してください。 Synapse はノートブックを JSON として格納します。Fabricは、ソース形式 .py/.scala または .ipynb を使用します。 Fabric ワークスペースを同じ Synapse Git ブランチに直接ポイントすることはできません。

  1. 項目を移行します。 Spark Migration Assistantを使用して、ノートブックと SSD を Synapse ワークスペースから Fabric ワークスペースに移行します。 これにより、項目がFabric互換性のある形式に変換されます。

  2. コードをリファクタリングします。 標準シナリオと同じコード リファクタリングを適用します。 mssparkutilsの置換、ファイル パスの更新、リンクされたサービスの置き換えです。 詳細については、「 Spark コードのリファクタリング 」セクションを参照してください。

  3. Fabric ワークスペースを Git に接続します。 Fabric ワークスペースをリポジトリ内の新しいブランチまたはフォルダー (Workspace Settings>Source Control>Git Integration) に接続します。 競合を回避するには、Synapse コンテンツとは別のブランチまたはフォルダーを使用します。 Fabricワークスペースのコンテンツをコミットして、新しいブランチを設定します。

  4. デプロイ パイプラインを設定します (省略可能)。 継続的な CI/CD 用Fabricデプロイ パイプライン (Dev → Test → Prod) を構成します。 Fabricでは、複数のステージにまたがってデプロイする場合に、既定の lakehouse とアタッチされた環境の自動バインドがサポートされます。

ヒント

履歴参照として Synapse Git ブランチをそのまま保持します。 Fabricコンテンツ用の新しいブランチまたはフォルダーを作成します。 Fabricは、コード レビュー用のよりクリーンな Git 差分を提供する JSON ではなく、ソース ファイル (PySpark の場合は .py) としてノートブックを格納します。

Spark コードをリファクタリングする

ノートブックと Spark ジョブ定義を移行した後、Migration Assistantが自動的に変換できないコード パターンを修正する必要があります。 このセクションでは、Synapse 固有の API の置き換え、ファイル パスの更新、Fabricで動作するように資格情報パターンを変更する方法について説明します。

リファクタリング前の監査

個々のリファクタリング パターンに対処する前に、すべてのノートブックでコードベース全体の検索を実行して、変更を必要とする Synapse 固有のコードを特定します。

検索パターン カテゴリ 必要なアクション
spark.synapse.linkedService リンクされたサービス 削除;直接エンドポイント認証またはKey Vaultシークレットに置き換える
getSecretWithLS 資格証明 に置き換える getSecret(vaultUrl, secretName)
TokenLibrary トークン/認証 削除;直接 OAuth 構成または notebookutils を使用する
synapsesql SQL コネクタ spark.read.synapsesql()をデルタ形式の読み取りに置き換える
mssparkutils Spark Utils notebookutilsに置き換える (ほとんどの API が同一)
spark.catalog.listDatabases カタログ API に置き換える spark.sql("SHOW DATABASES")
spark.catalog.currentDatabase カタログ API に置き換える spark.sql("SELECT CURRENT_DATABASE()")
spark.catalog.getDatabase カタログ API に置き換える spark.sql("DESCRIBE DATABASE ...")
spark.catalog.listFunctions カタログ API Fabricではサポートされていません - 削除
spark.catalog.registerFunction カタログ API サポートされていません - 代わりに spark.udf.register() を使用してください
spark.catalog.functionExists カタログ API Fabricではサポートされていません - 削除
LinkedServiceBasedTokenProvider 認証プロバイダー に置き換える ClientCredsTokenProvider
getPropertiesAsMap リンクされたサービス 削除;ストレージ アカウントを直接構成する
spark.storage.synapse リンクされたサービス 削除 — Fabricではサポートされていません
/user/trusted-service-user/ ファイル パス OneLake パスまたはショートカット パスに置き換える
cosmos.oltp Cosmos DB リンクされたサービスではなくシークレットにKey Vaultを使用するように更新する
kusto.spark.synapse Kusto/ADX リンクされたサービス認証を次の方法で accessToken に置き換えます getToken()

ヒント

移行の前に、ノートブック リポジトリ全体でこれらの検索を実行します。 一致がゼロのノートブックは、そのまま移行しても安全です。 一致する項目があるノートブックは、次のセクションの詳細なガイダンスを使用して、コードリファクタリングの対象として優先されるべきです。

ファイル パスの使用方法

相対パスまたは Synapse で管理されるストレージ パスを使用する Synapse ノートブックを更新し、Fabric 上で直接 abfss:// パスまたは OneLake パスを使用します。

Before (Synapse) After (Fabric)
"abfss://...@<synapse_storage>.dfs.core.windows.net/user/trusted-service-user/deltalake" "abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<lakehouse_id>/Tables/deltalake"
spark.read.synapsesql("<pool>.<schema>.<table>") spark.read.format("delta").load("abfss://.../<lakehouse>/Tables/<table>")

ヒント

すべての Synapse マネージド ストレージ パスを OneLake パス (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...) に置き換えます。 ADLS Gen2 データの場合は、OneLake ショートカットを作成し、代わりにショートカット パスを参照します。

Spark Catalog API

Fabricでは、いくつかのspark.catalog メソッドはサポートされていません。 それらを Spark SQL と同等のものに置き換えます。

Before (Synapse) After (Fabric)
spark.catalog.listDatabases() spark.sql("SHOW DATABASES").show()
spark.catalog.currentDatabase() spark.sql("SELECT CURRENT_DATABASE()").first()["current_database()"]
spark.catalog.getDatabase(db_name) spark.sql(f"DESCRIBE DATABASE {db_name}").show()
spark.catalog.listFunctions() Fabricではサポートされていません - 削除またはスキップ
spark.catalog.registerFunction(name, fn) Fabricではサポートされていません。代わりに spark.udf.register() を使用してください
spark.catalog.functionExists(name) Fabricではサポートされていません - 削除またはスキップ

Note

spark.catalog createTable()tableExists()listTables() などのテーブル メソッドは、通常、Fabricで動作します。 リファクタリングが必要なのは、データベース レベルおよび関数レベルのカタログ メソッドだけです。

MSSparkUtils と NotebookUtils

mssparkutils 呼び出しを同等のFabric notebookutilsに置き換えます。 資格情報に関連する最も一般的な変更は次のとおりです。

Before (Synapse) アフター(ファブリック)
mssparkutils.credentials.getSecretWithLS("sampleLS", secretKey) notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", secretKey)
TokenLibrary.getSecret("foo", "bar") notebookutils.credentials.getSecret("https://foo.vault.azure.net/", "bar")

Fabricでは、リンクされたサービス ベースのシークレットの取得 (getSecretWithLS) はサポートされていません。 代わりに、notebookutils.credentials.getSecret(vaultUrl, secretName) を使用して、Key Vault URL を直接参照します。 TokenLibrary.getSecret()呼び出しにも同じパターンが適用されます。

Note

ほとんどの mssparkutils.fs メソッド (たとえば、lscpmvrmmkdirshead) は、Fabricの notebookutils.fs と同じように動作します。 主な変更は、資格情報とシークレットメソッド、およびパス参照 notebook.run() です。

Azure Data Explorer (Kusto) コネクタ

リンクされたサービス経由で Azure Data Explorer (Kusto) に接続する Synapse ノートブックは、直接エンドポイント認証を使用するようにリファクタリングする必要があります。

Before (Synapse) After (Fabric)
.option("spark.synapse.linkedService", "AzureDataExplorer1") リンクされたサービス参照を削除する
リンク済みサービスのオプションセットを使用して読み取る .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net"))

リンクされたサービス オプションを accessToken オプションに置き換えます。 notebookutils.credentials.getToken()を使用して、Kusto クラスター エンドポイントのトークンを取得します。 残りのクエリ オプション (kustoDatabasekustoQuery) は変更されません。

Cosmos DB コネクタ

リンクされたサービスまたは getSecretWithLSを使用する Synapse の Cosmos DB 接続を更新します。

Before (Synapse) After (Fabric)
.option("spark.synapse.linkedService", "CosmosDbLS") リンクされたサービス参照を削除する
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey")

リンクされたサービス参照を直接 Cosmos DB エンドポイント構成に置き換えます。 Cosmos DB アカウント キーを Azure Key Vault に格納し、notebookutils.credentials.getSecret(vaultUrl, secretName) ではなく getSecretWithLS() を使用して取得します。

リンクされたサービス参照

Fabric内のすべての Synapse のリンクされたサービス参照を置き換えます。

ビフォー (シナプス) After (Fabric)
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) 削除 — Fabricではサポートされていません
spark.conf.set("fs.azure.account.oauth.provider.type", "com.microsoft.azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider") spark.conf.set("fs.azure.account.oauth.provider.type", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
TokenLibrary.getPropertiesAsMap(linked_service_cfg) ダイレクト接続文字列またはサービスプリンシパル構成を使用して削除する

Fabricでは、リンクされたサービスはありません。 Synapse トークン プロバイダーを標準の OAuth クライアント資格情報 (サービス プリンシパル) に置き換えます。 fs.azure.account.auth.typeを使用して、oauth.provider.typeclient.idclient.secretclient.endpoint、およびspark.conf.set()を直接構成します。

トークン ライブラリ

トークンを取得し、リンクされたサービス プロパティを読み取るための Synapse のTokenLibraryは、Fabricでは使用できません。 これを同等のパターンに置き換えます。

Before (Synapse) After (Fabric)
TokenLibrary.getPropertiesAsMap(serviceConnection) 削除 - ストレージ アカウントを直接構成する
val my_account = conexion("Endpoint").toString.substring(8) val my_account = "<storage_account_name>" // Hardcode or retrieve via notebookutils
mssparkutils.fs.head(internalPath, Int.MaxValue) notebookutils.fs.head(internalPath, Int.MaxValue)

OAuth ベースの ADLS Gen2 アクセスの場合は、リンクされたサービス トークン プロバイダーに依存するのではなく、ストレージ アカウント固有のキー (spark.conf.set() など) でfs.azure.account.auth.type.<account>.dfs.core.windows.netを使用して、サービス プリンシパルの資格情報を直接構成します。

Important

切り替え前に、リンクされたサービス参照を含むすべてのノートブックを確認してください。 残りの spark.synapse.linkedServiceTokenLibrary、または getSecretWithLS 呼び出しは、Fabricの実行時に失敗します。

Spark ジョブ定義の移行

Spark ジョブ定義 (SJD) は、メインの実行可能ファイル (.py.jar、または .R)、オプションの参照ライブラリ、コマンドライン引数、およびレイクハウスコンテキストを参照するバッチジョブ構成です。 Spark Migration Assistantは SJD の移行を自動的に処理しますが、Synapse と Fabric SSD の重要な違いには注意が必要です。

Synapse と Fabric SJD の主な違い

  • Lakehouse コンテキストが必要です。 Fabricでは、すべての SJD に少なくとも 1 つのレイクハウスが関連付けられている必要があります。 この lakehouse は、Spark ランタイムの既定のファイル システムとして機能します。 相対パスを使用するコードは、既定の lakehouse から読み取りと書き込みを行います。 Synapse では、SSD はワークスペースの既定のストレージ (ADLS Gen2) を既定のファイル システムとして使用します。

  • サポートされている言語。 Fabricでは、PySpark (Python)、Spark (Scala/Java)、SparkR がサポートされます。 Fabricでは、Spark の.NET (C#/F#) はサポートされていません。 移行する前に、Pythonまたは Scala でこれらのワークロードを書き直す必要があります。

  • 再試行ポリシー。 Fabric SSD では、最大再試行回数や再試行間隔など、組み込みの再試行ポリシーがサポートされます。 この機能は、無期限に実行する必要がある Spark 構造化ストリーミング ジョブに役立ちます。

  • 環境バインド。 Synapse では、SJD は Spark プールにバインドされます。 Fabricでは、SSD はプールの構成、ライブラリ、Spark のプロパティを含む環境にバインドされます。 Migration Assistantは、Synapse プール参照を Fabric 環境に自動的にマップします。

  • スケジュール設定。 Fabric SJDには、個別のパイプラインを必要とせずに、Settings>Scheduleに組み込まれたスケジューリング機能があります。 Synapse では、SJD スケジューリングには Spark ジョブ アクティビティを含むパイプラインが必要です。 Synapse パイプラインが SJD のみをトリガーする場合は、パイプラインを移行するのではなく、Fabric の組み込みの SJD スケジューリングを使用することを検討してください。

  • インポート/エクスポート。 Synapse では、SSD の UI ベースの JSON インポートとエクスポートがサポートされています。 Fabricでは、UI のインポートまたはエクスポートはサポートされていません。 Spark Migration Assistantまたは Fabric REST API を使用して、プログラムを介して SJD を作成または更新します。

SJD コードをリファクターする

この記事の同じコード リファクタリング パターンが SJD メイン ファイルに適用されます。 変更は 2 つのカテゴリに分類されます。

ソース コードの変更 ( .py.jar、またはメイン ファイル .R 内):

  • mssparkutilsを資格情報とファイル システム操作のnotebookutilsに置き換えます。
  • 必要に応じ、コード内のハードコーディングされたファイル パスを OneLake abfss:// パスまたはショートカット パスに更新します。 既定のレイクハウスに対して相対パスのみを使用する SSD は、変更を必要としない場合があります。
  • コード内のリンクされたサービス参照をキー・ボールトのシークレットまたはファブリック接続に置き換えます。

Note

DMTS 接続は、Fabric Spark ジョブ定義ではまだサポートされていません (ノートブックでのみサポートされます)。 SJD コードで DMTS を使用する場合は、直接エンドポイント認証を使用するようにリファクタリングします。

SJD 構成の変更 (Fabric SJD 項目の設定):

  • メイン定義ファイルによって参照される ADLS Gen2 パスが、Fabric ワークスペースから引き続きアクセス可能であることを確認します。 ファイルが Synapse ワークスペースの内部ストレージに格納されている場合は、Fabric SJD に再アップロードするか、アクセス可能な ADLS Gen2 の場所に移動します。
  • 移行後にすべての参照ファイル (.py.R.jar) にアクセス可能であることを確認します。 Synapse ワークスペースの内部ストレージに格納されていたファイルを再アップロードします。
  • コマンド ライン引数に Synapse 固有のパスまたは接続文字列が含まれている場合は、同等Fabricに更新します。

プール、環境、およびライブラリを移行する

ノートブックと Spark ジョブ定義が移行されたら、プールと環境の戦略を決定する必要があります。 このセクションでは、(移行ではなく) Fabricスターター プールを使用できるタイミング、カスタム環境を作成するタイミング、およびライブラリの互換性のギャップを特定して解決する方法について説明します。

スパークプールの移行

Fabric スターター プール

Fabric スターター プールは、秒レベルの Spark セッションの起動を提供します。Synapse Spark プールに比べて大幅に改善されており、クラスターの起動には数分のコールド スタートが必要です。 スターター プールはプラットフォームから使用できる状態であり、構成は必要ありません。

ヒント

Synapse Spark プールにカスタム構成がなく、カスタム ライブラリがなく、Medium を超える特定のノード サイズ要件がない場合は、プールを移行しないでください。 代わりに、ノートブックと Spark ジョブ定義で、Fabric ワークスペースのデフォルトのスタータープール設定を使用してください。 この方法では、起動時間が最も速く、プール管理のオーバーヘッドがゼロになります。 特定のニーズがある場合にのみ、カスタム プールまたは環境を作成します。

カスタム プールまたは環境を作成するタイミング

ワークロードで必要な場合にのみ、Fabricカスタム プールまたは環境を作成します。

  • 既定の Medium とは異なる特定のノード サイズ (Small、Large、XLarge、XXLarge)。
  • Fabric 組み込みランタイムにないカスタムライブラリ (pip パッケージ、conda パッケージ、JAR、ホイール)。
  • 既定値を超えるカスタム Spark プロパティ ( spark.sql.shuffle.partitionsspark.executor.memoryなど)。
  • プライベート データ ソースにアクセスするためのマネージド プライベート エンドポイント (カスタム プールが必要)。
  • ワークスペースの既定値とは異なる特定の Spark ランタイム バージョン。

構成とライブラリの移行

Spark の構成とライブラリを Fabric 環境に移行します。

ライブラリをFabric環境に移行する詳細な手順については、「 Spark ライブラリをAzure Synapseから Fabric

  1. Spark 構成をエクスポートします。 Synapse Studioで、Manage>Spark プール>を選択し、プール>構成 + ライブラリ>を.ymlとしてダウンロードします。

  2. 環境にインポートします。 Fabricで、環境成果物を作成します。 Spark Compute>Spark プロパティ>エクスポートした ファイルをSparkproperties.ymlします。

  3. ライブラリを移行します。 プール レベルのライブラリの場合は、パッケージ (ホイール、JAR、tars) を環境のライブラリ セクションにアップロードします。 PyPI/Conda パッケージの場合は、それらを環境のパブリック ライブラリ構成に追加します。

Important

Fabricのワークスペース レベルのライブラリ設定は非推奨です。 すべてのライブラリを環境成果物に移行します。 移行により、既存のワークスペース レベルの構成が完全に削除されます。環境を有効にする前にすべての設定をダウンロードします。

ライブラリの互換性: Synapse と Fabric

Fabric Runtime 1.3 (Spark 3.5) には、223 Python、183 Java/Scala、および 135 R ライブラリが組み込まれています。 ほとんどの Synapse ライブラリはFabricで使用できますが、移行前に対処しないとランタイム エラーを引き起こす可能性のあるギャップがあります。

ノートブックで実際に使用するライブラリを特定するには、ギャップ テーブルを確認する前に次のチェックを実行します。

  • Python notebooks:importfrom ... import.py ファイル全体で、 / および .ipynb ステートメントを検索します。
  • Java/Scala ノートブックと SJDs:import ステートメントと Maven 座標を検索します。com.azure.cosmos.sparkcom.microsoft.kusto.spark などのパッケージを探します。
  • Export 完全な依存関係リスト: Synapse ノートブックで pip freeze を実行し、Fabric Runtime 1.3 マニフェストと比較します。 pip freeze出力と以下のギャップ テーブルの両方に表示されるライブラリにのみ、アクションが必要です。
  • プール レベルおよびワークスペース レベルのカスタム ライブラリ: Synapse Studio で、Manageに移動しますApache Spark プールプール Packages を選択して、Fabric 環境に再アップロードする必要があるカスタム ライブラリを表示します。

Fabricに不足しているPythonライブラリ

カテゴリ ライブラリ アクション
CUDA / GPU (9 libs) libcublas、libcufft、libcufile、libcurand、libcusolver、libcusparse、libnpp、libnvfatbin、libnvjitlink、libnvjpeg 使用できません。Fabricは GPU プールをサポートしていません。 GPU ワークロードをリファクタリングして、CPU ベースの代替手段を使用するか、Synapse を維持します。
HTTP/API クライアント httpx、httpcore、h11、google-auth、jmespath 環境経由でインストールします。 pip install httpx google-auth jmespath
ML/解釈可能性 interpret、interpret-core 環境経由でインストールします。 pip install interpret
データのシリアル化 marshmallow、jsonpickle、frozendict、fixedint 必要に応じて、環境経由でインストールします。 pip install marshmallow jsonpickle
ログ/テレメトリ fluent-logger, humanfriendly, library-metadata-cooker, impulse-python-handler fluent-logger: 使用した場合はインストールします。 その他の部分は Synapse 内部のものであり、おそらく必要ありません。
Jupyter internals jupyter-client、jupyter-core、jupyter-ui-poll、jupyterlab-widgets、ipython-pygments-lexers Fabricは、Jupyter インフラストラクチャを内部的に管理します。 通常、これらのライブラリはユーザー コードでは必要ありません。
システム/C ライブラリ libgcc、libstdcxx、libgrpc、libabseil、libexpat、libnsl、libzlib 低レベルのシステム ライブラリ。 通常は直接インポートされません。 それらに依存する C 拡張機能がある場合にのみインストールします。
ファイル/並行処理 filelock、fsspec、knack 使用する場合は、環境経由でインストールします。 pip install filelock fsspec

Java/Scala ライブラリがFabricから見つからない

Library Synapse バージョン アクション
azure-cosmos-analytics-spark 2.2.5 Spark ジョブで Cosmos DB 分析コネクタを使用する場合は、Fabric環境にカスタム JAR としてインストールします。
junit-jupiter-params 5.5.2 テスト専用ライブラリ。 運用ノートブックでは必要ありません。
junit-platform-commons 1.5.2 テスト専用ライブラリ。 運用ノートブックでは必要ありません。

R ライブラリ

違いは 1 つだけです。Synapse には、Fabricに含まれていない lightgbm R パッケージ (v4.6.0) が含まれています。 必要に応じて、環境経由でインストールします。 FabricはFabricTelemetry (v1.0.2)をFabric内部に追加します。

主なバージョンの違い

68 Python ライブラリは両方のプラットフォームに存在しますが、バージョンは異なります。 ほとんどはマイナー バージョンの違いですが、17 には動作に影響を与える可能性があるメジャー バージョンのジャンプがあります。

Library Fabric バージョン Synapse バージョン 影響
libxgboost 2.0.3 3.0.1 v2 と v3 の間の XGBoost API の変更。 モデルのトレーニング/予測コードをテストします。
フラスコ 2.2.5 3.0.3 Flask 3.x には破壊的変更があります。 ノートブックから Flask API を提供する場合は、十分にテストしてください。
lxml 4.9.3 5.3.0 API の軽微な変更。 XML 解析ワークフローをテストします。
libprotobuf 3.20.3 4.25.3 Protobuf 4.x には、カスタム proto 定義に関する破壊的変更があります。
markupsafe 2.1.3 3.0.2 MarkupSafe 3.x では Python 3.7 のサポートが終了しましたが、API は互換性があります。
libpq 12.17 17.4 PostgreSQL クライアント ライブラリ。 メジャー バージョンジャンプ - DB 接続をテストします。
libgcc-ng / libstdcxx-ng 11.2.0 15.2.0 GCC ランタイム。 C 拡張機能の互換性に影響する可能性があります。

Note

Synapse は一般に、新しいバージョンのシステム レベル ライブラリ (GCC、protobuf、libpq) を提供しますが、Fabricは新しいバージョンのデータ/ML ライブラリ (よりPythonパッケージ全体) を出荷します。 特定のバージョンが必要な場合は、Fabric環境構成にピン留めします。

ヒント

クイック互換性チェックを実行します。Synapse プールのライブラリ リスト (pip freeze) をエクスポートし、Fabric Runtime 1.3 マニフェストと比較し、移行されたノートブックを実行する前に、Fabric環境に不足しているライブラリを事前にインストールします。 Fabric と Synapse Spark ランタイム間のすべての組み込みライブラリとバージョンの 1 行ずつの比較については、microsoft/synapse-spark-runtime GitHub リポジトリを参照してください。