この記事は、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 に直接格納されるワークスペースの場合:
Fabric ワークスペース (Migrate>Data engineering items) から Spark Migration Assistantを実行します。 ソース Synapse ワークスペースを選択し、すべての Spark 項目を移行します。
依存関係を検証する: 同じ Spark バージョンが使用されていることを確認します。 ノートブックが
mssparkutils.notebook.run()を介して他のノートブックを参照している場合は、それらのノートブックも移行されたことを確認します。 Migration Assistantはフォルダー構造を保持します (Fabricは最大 10 レベルの入れ子をサポートします)。コードのリファクタリング:
mssparkutilsをnotebookutilsに置き換え、リンクされたサービス参照を Fabric Connections に置き換え、ファイル パスを更新します。 詳細については、「 Spark コードのリファクタリング 」セクションを参照してください。
Git 対応ワークスペースの移行
ノートブックと SSD が Azure DevOps または GitHub リポジトリに格納されているワークスペースの場合は、Synapse と Fabricで異なる Git シリアル化形式が使用されることに注意してください。 Synapse はノートブックを JSON として格納します。Fabricは、ソース形式 .py/.scala または .ipynb を使用します。 Fabric ワークスペースを同じ Synapse Git ブランチに直接ポイントすることはできません。
項目を移行します。 Spark Migration Assistantを使用して、ノートブックと SSD を Synapse ワークスペースから Fabric ワークスペースに移行します。 これにより、項目がFabric互換性のある形式に変換されます。
コードをリファクタリングします。 標準シナリオと同じコード リファクタリングを適用します。
mssparkutilsの置換、ファイル パスの更新、リンクされたサービスの置き換えです。 詳細については、「 Spark コードのリファクタリング 」セクションを参照してください。Fabric ワークスペースを Git に接続します。 Fabric ワークスペースをリポジトリ内の新しいブランチまたはフォルダー (Workspace Settings>Source Control>Git Integration) に接続します。 競合を回避するには、Synapse コンテンツとは別のブランチまたはフォルダーを使用します。 Fabricワークスペースのコンテンツをコミットして、新しいブランチを設定します。
デプロイ パイプラインを設定します (省略可能)。 継続的な 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 メソッド (たとえば、ls、cp、mv、rm、mkdirs、head) は、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 クラスター エンドポイントのトークンを取得します。 残りのクエリ オプション (kustoDatabase、 kustoQuery) は変更されません。
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.type、client.id、client.secret、client.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.linkedService、TokenLibrary、または 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.partitions、spark.executor.memoryなど)。 - プライベート データ ソースにアクセスするためのマネージド プライベート エンドポイント (カスタム プールが必要)。
- ワークスペースの既定値とは異なる特定の Spark ランタイム バージョン。
構成とライブラリの移行
Spark の構成とライブラリを Fabric 環境に移行します。
ライブラリをFabric環境に移行する詳細な手順については、「
Spark 構成をエクスポートします。 Synapse Studioで、Manage>Spark プール>を選択し、プール>構成 + ライブラリ>を
.ymlとしてダウンロードします。環境にインポートします。 Fabricで、環境成果物を作成します。 Spark Compute>Spark プロパティ>エクスポートした ファイルを
Sparkproperties.ymlします。ライブラリを移行します。 プール レベルのライブラリの場合は、パッケージ (ホイール、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.sparkやcom.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 リポジトリを参照してください。
関連するコンテンツ
- フェーズ 1: 移行戦略と計画
- フェーズ 3: Hive メタストアとデータ移行
- フェーズ 4: セキュリティとガバナンスの移行
- Azure Synapse ノートブックを Fabric に移行する
- Spark ジョブ定義を Azure Synapse から Fabric に移行する
Spark プールを Azure Synapse から Fabric