Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel ist Phase 2 von 4 in der Reihe "Azure Synapse Spark to Microsoft Fabric migration best practices".
Verwenden Sie diesen Artikel, um Ihre Spark-Workloads von Azure Synapse zu Microsoft Fabric zu migrieren. In diesem Artikel werden der Migration Assistant, die Refaktorisierung von Code-Mustern, die nicht automatisch konvertiert werden können, sowie das Migrieren von Spark-Pool-Konfigurationen, Umgebungen und Bibliotheken behandelt.
In diesem Artikel erfahren Sie, wie Sie:
- Verständnis des Migrationsworkflows für Standardarbeitsbereiche (nicht-Git) und Git-fähige Synapse-Arbeitsbereiche.
- Verwenden Sie die Spark-Migration Assistant zum Migrieren von Notizbüchern, Spark-Auftragsdefinitionen und Pools.
- Umstrukturieren Sie Synapse-spezifische Codemuster für die Fabric-Kompatibilität.
- Migrieren Sie Spark pool-Einstellungen, Umgebungen und Bibliotheken.
- Ermitteln und Beheben von Bibliothekskompatibilitätslücken zwischen Synapse und Fabric.
Migrieren mit dem Migration Assistant
Die Spark Migration Assistant automatisiert die Migration von Notizbüchern, Spark-Auftragsdefinitionen, Pools und Lake-Datenbankmetadaten von Synapse zu Fabric. Der Assistent kopiert und transformiert Ihre Elemente, schließt die Migration jedoch nicht ab– Sie müssen code noch umgestalten, Konfigurationslücken abgleichen und die Ergebnisse überprüfen.
Schrittweise Anleitungen zum Ausführen des Assistenten finden Sie unter Spark Synapse zum Fabric Spark Migration Assistant (Vorschau).
Der Assistent migriert die folgenden Elemente:
- Sparkpools werden zu Fabric Pools und entsprechenden Umgebungsartefakten migriert.
- Computernotebooks und die zugehörigen Umgebungen werden migriert.
- Spark-Auftragsdefinitionen werden mit zugehörigen Umgebungen migriert.
- Lake-Datenbanken werden Fabric-Schemas zugeordnet; verwaltete Delta-Tabellen werden über Katalogverknüpfungen von OneLake migriert.
Important
Spark-Konfigurationen, benutzerdefinierte Bibliotheken und benutzerdefinierte Executoreinstellungen werden vom Assistenten nicht migriert. Sie müssen diese manuell in Fabric Umgebungen konfigurieren. Synapse-Arbeitsbereiche unter einem VNet können nicht mit dem Assistenten migriert werden.
Standard (nicht-Git) Arbeitsbereichsmigration
Für Arbeitsbereiche, in denen Notizbücher und SJDs direkt in Synapse gespeichert werden (nicht in einem Git-Repository):
Führen Sie den Spark-Migration Assistant aus Ihrem Fabric-Arbeitsbereich aus (Migrate>Data engineering items). Wählen Sie den Synapse-Quellarbeitsbereich aus, und migrieren Sie alle Spark-Elemente.
Überprüfen von Abhängigkeiten: Stellen Sie sicher, dass dieselbe Spark-Version verwendet wird. Wenn Notizbücher auf andere Notizbücher über
mssparkutils.notebook.run()verweisen, überprüfen Sie, ob diese ebenfalls migriert wurden. Der Migrationsassistent behält die Ordnerstruktur bei (Fabric unterstützt bis zu 10 Schachtelungsebenen).Umgestaltungscode: Ersetzen Sie
mssparkutilsdurchnotebookutils, ersetzen Sie verknüpfte Dienstverweise durch Fabric Connections, und aktualisieren Sie Dateipfade. Ausführliche Informationen finden Sie im Abschnitt " Refactor Spark code ".
Migration von Git-fähigen Arbeitsbereichen
Beachten Sie für Arbeitsbereiche, in denen Notizbücher und SJDs in einem Azure DevOps- oder GitHub-Repository gespeichert sind, dass Synapse und Fabric verschiedene Git-Serialisierungsformate verwenden. Synapse speichert Notizbücher als JSON; Fabric verwendet das Quellformat .py/.scala oder .ipynb. Sie können einen Fabric Arbeitsbereich nicht direkt auf dieselbe Synapse Git-Verzweigung verweisen.
Migrieren von Elementen. Verwenden Sie den Spark-Migrationsassistenten, um Notizbücher und SJDs aus dem Synapse-Arbeitsbereich in einen Fabric-Arbeitsbereich zu migrieren. Dadurch werden Elemente in ein Fabric-kompatibles Format konvertiert.
Code umgestalten. Wenden Sie dieselbe Codeumgestaltung wie das Standardszenario an: Ersetzen
mssparkutils, Aktualisieren von Dateipfaden, Ersetzen verknüpfter Dienste. Ausführliche Informationen finden Sie im Abschnitt " Refactor Spark code ".Verbinden Sie den "Fabric"-Arbeitsbereich mit Git. Verbinden Sie Ihren Fabric-Arbeitsbereich mit einer neuen Verzweigung oder einem neuen Ordner in Ihrem Repository (Arbeitsbereichseinstellungen>Quellcodeverwaltung>Git-Integration). Verwenden Sie eine separate Verzweigung oder einen separaten Ordner für Ihre Synapse-Inhalte, um Konflikte zu vermeiden. Übernehmen Sie den Inhalt des Fabric Arbeitsbereichs, um die neue Verzweigung aufzufüllen.
Einrichten von Bereitstellungspipelines (optional). Konfigurieren sie Fabric Bereitstellungspipelines (Dev → Test → Prod) für laufende CI/CD. Fabric unterstützt die automatische Verknüpfung für Standard-Lakehouses und angefügte Umgebungen bei der Bereitstellung über Entwicklungsphasen hinweg.
Tipp
Behalten Sie Ihren Synapse Git Branch als historische Referenz. Erstellen Sie eine neue Verzweigung oder einen neuen Ordner für Fabric-Inhalte. Fabric speichert Notizbücher als Quelldateien (.py für PySpark) und nicht als JSON, was übersichtlichere Git-Diffs für die Codeüberprüfung bereitstellt.
Umgestalten von Spark-Code
Nachdem Sie Ihre Notizbücher und Spark-Auftragsdefinitionen migriert haben, müssen Sie Codemuster beheben, die vom Migration Assistant nicht automatisch konvertiert werden können. Dieser Abschnitt führt Sie durch das Ersetzen synapsespezifischer APIs, Aktualisieren von Dateipfaden und Ändern von Anmeldeinformationsmustern, um mit Fabric zu arbeiten.
Überprüfung vor der Umgestaltung
Führen Sie vor der Behandlung einzelner Umgestaltungsmuster eine codebasierte Suche in allen Notizbüchern aus, um Synapse-spezifischen Code zu identifizieren, der Änderungen benötigt.
| Suchmuster | Kategorie | Aktion erforderlich |
|---|---|---|
spark.synapse.linkedService |
Verknüpfte Dienste | Entfernen; ersetzen durch direkte Endpunkt-Authentifizierung oder Key Vault-Geheimnisse |
getSecretWithLS |
Anmeldeinformationen | Ersetzen durch getSecret(vaultUrl, secretName) |
TokenLibrary |
Token/Authentifizierung | Entfernen; Verwenden Sie die direkte OAuth-Konfiguration oder notebookutils |
synapsesql |
SQL-Konnektor | Ersetzen spark.read.synapsesql() durch Lesevorgänge im Delta-Format |
mssparkutils |
Spark Utils | Ersetzen durch notebookutils (die meisten APIs identisch) |
spark.catalog.listDatabases |
Katalog-API | Ersetzen durch spark.sql("SHOW DATABASES") |
spark.catalog.currentDatabase |
Katalog-API | Ersetzen durch spark.sql("SELECT CURRENT_DATABASE()") |
spark.catalog.getDatabase |
Katalog-API | Ersetzen durch spark.sql("DESCRIBE DATABASE ...") |
spark.catalog.listFunctions |
Katalog-API | In Fabric nicht unterstützt – entfernen |
spark.catalog.registerFunction |
Katalog-API | Nicht unterstützt – verwenden Sie spark.udf.register() stattdessen |
spark.catalog.functionExists |
Katalog-API | In Fabric nicht unterstützt – entfernen |
LinkedServiceBasedTokenProvider |
Authentifizierungsanbieter | Ersetzen durch ClientCredsTokenProvider |
getPropertiesAsMap |
Verknüpfte Dienste | Entfernen; Direktes Konfigurieren des Speicherkontos |
spark.storage.synapse |
Verknüpfte Dienste | Entfernen – in Fabric nicht unterstützt |
/user/trusted-service-user/ |
Dateipfade | Ersetzen durch OneLake-Pfad oder Verknüpfungspfad |
cosmos.oltp |
Cosmos DB | Aktualisieren, um Key Vault für geheime Schlüssel anstelle des verknüpften Diensts zu verwenden |
kusto.spark.synapse |
Kusto/ADX | Ersetzen der verknüpften Dienstauthentifizierung durch accessToken über getToken() |
Tipp
Führen Sie diese Suchvorgänge vor der Migration im gesamten Notizbuch-Repository aus. Notizbücher mit null Übereinstimmungen sind sicher, as-iszu migrieren. Notizbücher mit Übereinstimmungen sollten für die Codeumgestaltung mithilfe der detaillierten Anleitungen in den folgenden Abschnitten priorisiert werden.
Dateipfadnutzung
Aktualisieren Sie Synapse-Notizbücher, die relative Pfade oder Synapse-verwaltete Speicherpfade verwenden, indem Sie direkte abfss:// Pfade oder OneLake-Pfade in Fabric nutzen.
| 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>") |
Tipp
Ersetzen Sie alle synapseverwalteten Speicherpfade durch OneLake-Pfade (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...). Erstellen Sie OneLake-Abkürzungen für ADLS Gen2-Daten und verweisen Sie stattdessen auf die Abkürzungspfade.
Spark Catalog-API
Fabric unterstützt nicht mehrere spark.catalog Methoden. Ersetzen Sie sie durch Spark SQL-Entsprechungen.
| Vor (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() |
In Fabric nicht unterstützt – Entfernen oder Überspringen |
spark.catalog.registerFunction(name, fn) |
In Fabric nicht unterstützt – verwenden Sie stattdessen spark.udf.register() |
spark.catalog.functionExists(name) |
In Fabric nicht unterstützt – Entfernen oder Überspringen |
Note
spark.catalog Tabellenmethoden wie createTable(), tableExists() und listTables() funktionieren normalerweise in Fabric. Nur Datenbank- und funktionsbezogene Katalogmethoden erfordern ein Refactoring.
MSSparkUtils und NotebookUtils
Ersetzen Sie mssparkutils-Aufrufe durch die Entsprechungen Fabric notebookutils. Die häufigsten Änderungen im Zusammenhang mit Anmeldeinformationen sind:
| Before (Synapse) | After (Fabric) |
|---|---|
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") |
In Fabric wird das abrufen von verknüpften dienstbasierten geheimen Schlüsseln (getSecretWithLS) nicht unterstützt. Verweisen Sie stattdessen mithilfe von notebookutils.credentials.getSecret(vaultUrl, secretName) direkt auf die Key Vault-URL. Das gleiche Muster gilt für TokenLibrary.getSecret() Anrufe.
Note
Die meisten methoden mssparkutils.fs (z. B. ls, cp, mv, rm, mkdirs, head) funktionieren identisch wie notebookutils.fs in Fabric. Die primären Änderungen sind Anmeldeinformationen und geheime Methoden und notebook.run() Pfadverweise.
Azure Data Explorer (Kusto)-Connector
Synapse-Notizbücher, die über verknüpfte Dienste eine Verbindung mit Azure Data Explorer (Kusto) herstellen, müssen umgestaltet werden, um die direkte Endpunktauthentifizierung zu verwenden.
| Before (Synapse) | After (Fabric) |
|---|---|
.option("spark.synapse.linkedService", "AzureDataExplorer1") |
Entfernen des Verweises auf den verbundenen Dienst |
| Lesen mit Optionssatz für verknüpfte Dienste | .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net")) |
Ersetzen Sie die Option für den verknüpften Dienst durch eine accessToken Option. Verwenden Sie notebookutils.credentials.getToken(), um ein Token für Ihren Kusto-Clusterendpunkt abzurufen. Die restlichen Abfrageoptionen (kustoDatabase, kustoQuery) bleiben unverändert.
Cosmos DB-Verbinder
Aktualisieren Sie Cosmos-DB-Verbindungen in Synapse, die verknüpfte Dienste verwenden oder getSecretWithLS.
| Vor (Synapse) | After (Fabric) |
|---|---|
.option("spark.synapse.linkedService", "CosmosDbLS") |
Verknüpften Dienstverweis entfernen |
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") |
notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey") |
Ersetzen Sie den verknüpften Dienstverweis durch die direkte Cosmos DB-Endpunktkonfiguration. Speichern Sie den Cosmos DB-Kontoschlüssel in Azure Key Vault, und rufen Sie ihn mithilfe von notebookutils.credentials.getSecret(vaultUrl, secretName) anstelle von getSecretWithLS() ab.
Verknüpfte Dienstverweise
Ersetzen Sie alle Synapse-Verweise auf verknüpfte Dienste in Fabric.
| Vor (Synapse) | After (Fabric) |
|---|---|
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) |
Entfernen – in Fabric nicht unterstützt |
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) |
Entfernen – Verwenden Sie eine direkte Verbindungszeichenfolge oder eine Dienstprinzipal-Konfiguration |
In Fabric gibt es keine verknüpften Dienste. Ersetzen Sie den Synapse-Tokenanbieter durch standardmäßige OAuth-Clientanmeldeinformationen (Dienstprinzipal). Konfigurieren Sie fs.azure.account.auth.type, oauth.provider.type, client.id, client.secret und client.endpoint direkt mithilfe von spark.conf.set().
Tokenbibliothek
Synaps TokenLibrary zum Abrufen von Token und Lesen verknüpfter Diensteigenschaften ist in Fabric nicht verfügbar. Ersetzen Sie sie durch entsprechende Muster.
| Vor (Synapse) | After (Fabric) |
|---|---|
TokenLibrary.getPropertiesAsMap(serviceConnection) |
Entfernen – direktes Konfigurieren des Speicherkontos |
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) |
Konfigurieren Sie den OAuth-basierten Zugriff auf ADLS Gen2, indem Sie die Anmeldeinformationen des Dienstprinzipals direkt mit spark.conf.set() und den speicherkontospezifischen Schlüsseln (z. B. fs.azure.account.auth.type.<account>.dfs.core.windows.net) konfigurieren, anstatt sich auf verknüpfte Dienst-Token-Anbieter zu verlassen.
Important
Überprüfen Sie alle Notizbücher auf verknüpfte Dienstverweise vor dem Übergang. Alle verbleibenden spark.synapse.linkedService, TokenLibrary oder getSecretWithLSAufrufe schlagen zur Laufzeit in Fabric fehl.
Spark-Auftragsdefinitionsmigration
Spark-Auftragsdefinitionen (SJDs) sind Batchauftragskonfigurationen, die auf eine ausführbare Hauptdatei (.py, .jaroder .R), optionale Referenzbibliotheken, Befehlszeilenargumente und einen Lakehouse-Kontext verweisen. Während die Spark Migration Assistant die SJD-Migration automatisch verarbeitet, erfordern wichtige Unterschiede zwischen Synapse und Fabric SJDs Aufmerksamkeit.
Wichtige Unterschiede zwischen Synapse und Fabric SJDs
Lakehouse-Kontext erforderlich. In Fabric muss jeder SJD mindestens ein Seehaus zugeordnet haben. Dieses Lakehouse dient als Standarddateisystem für Spark Runtime. Jeder Code, der relative Pfade verwendet, liest und schreibt vom Standard-Lakehouse. In Synapse verwenden SJDs den Standardspeicher des Arbeitsbereichs (ADLS Gen2) als Standarddateisystem.
Unterstützte Sprachen. Fabric unterstützt PySpark (Python), Spark (Scala/Java) und SparkR. .NET für Spark (C#/F#) wird in Fabric nicht unterstützt. Sie müssen diese Workloads vor der Migration in Python oder Scala neu schreiben.
Wiederholen Sie die Richtlinien. Fabric SJDs unterstützen integrierte Wiederholungsrichtlinien wie max. Wiederholungsversuche und Wiederholungsintervalle. Dieses Feature ist nützlich für Spark Structured Streaming-Aufträge, die unbegrenzt ausgeführt werden müssen.
Umgebungsbindung. In Synapse sind SJDs an einen Spark-Pool gebunden. In Fabric binden SJDs an eine Umgebung, die Poolkonfiguration, Bibliotheken und Spark-Eigenschaften enthält. Der Migration Assistant ordnet Synapse-Poolverweise automatisch Fabric-Umgebungen zu.
Planung. Fabric SJDs verfügen über integrierte Planung (Settings>Schedule), ohne dass eine separate Pipeline erforderlich ist. In Synapse erfordert die SJD-Planung eine Pipeline mit einer Spark Job-Aktivität. Wenn Sie über Synapse-Pipelines verfügen, die nur SJDs auslösen, sollten Sie die verwendung der integrierten SJD-Planung von Fabric anstelle der Migration der Pipeline in Betracht ziehen.
Importieren/Exportieren. Synapse unterstützt den UI-basierten JSON-Import und -Export für SJDs. Fabric unterstützt keinen Import oder Export der Benutzeroberfläche. Verwenden Sie die Spark-Migration Assistant oder die Fabric REST-API, um SJDs programmgesteuert zu erstellen oder zu aktualisieren.
Umgestalten von SJD-Code
Die gleichen Codeumgestaltungsmuster in diesem Artikel gelten für SJD-Hauptdateien. Änderungen werden in zwei Kategorien unterteilt.
Quellcodeänderungen (innerhalb der .py, .jaroder .R Hauptdatei):
- Ersetzen Sie
mssparkutilsdurchnotebookutilsbei Anmeldeinformationen und Dateisystemvorgängen. - Aktualisieren Sie bei Bedarf fest kodierte Dateipfade im Code zu OneLake-Pfaden
abfss://oder Verknüpfungspfaden. SJDs, die nur relative Pfade für das Standard-Lakehouse verwenden, benötigen möglicherweise keine Änderungen. - Ersetzen Sie verknüpfte Dienstverweise im Code durch Key Vault Secrets oder Fabric Connections.
Note
DMTS-Verbindungen werden in Fabric Spark-Auftragsdefinitionen noch nicht unterstützt (nur in Notizbüchern unterstützt). Wenn Ihr SJD-Code DMTS verwendet, stellen Sie auf die direkte Endpunktauthentifizierung um.
SJD-Konfigurationsänderungen (in den Fabric SJD-Elementeinstellungen):
- Stellen Sie sicher, dass auf ADLS Gen2-Pfade, auf die von den Hauptdefinitionsdateien verwiesen wird, weiterhin über den arbeitsbereich Fabric zugegriffen werden kann. Wenn Dateien im internen Speicher des Synapse-Arbeitsbereichs gespeichert wurden, laden Sie sie erneut in die Fabric SJD hoch, oder verschieben Sie sie an einen zugänglichen ADLS Gen2-Speicherort.
- Überprüfen Sie, ob nach der Migration auf alle Referenzdateien (
.py,.R,.jar) zugegriffen werden kann. Laden Sie alle Dateien, die im internen Speicher des Synapse-Arbeitsbereichs gespeichert wurden, erneut hoch. - Wenn Befehlszeilenargumente Synapse-spezifische Pfade oder Verbindungszeichenfolgen enthalten, aktualisieren Sie sie auf Fabric Entsprechungen.
Migrieren von Pools, Umgebungen und Bibliotheken
Nachdem Ihre Notizbücher und Spark-Auftragsdefinitionen migriert wurden, müssen Sie sich für die Pool- und Umgebungsstrategie entscheiden. In diesem Abschnitt wird erläutert, wann Sie Fabric Starterpools (anstelle der Migration) verwenden können, wann benutzerdefinierte Umgebungen erstellt werden sollen und wie Sie Kompatibilitätslücken für Bibliotheken identifizieren und beheben können.
Sparkpoolmigration
Fabric Starterpools
Fabric Starter-Pools ermöglichen den Start von Spark-Sitzungen innerhalb von Sekunden – eine erhebliche Verbesserung gegenüber Synapse Spark-Pools, die minutenlange Kaltstarts benötigen, um Cluster zu starten. Starterpools können von der Plattform verwendet werden und benötigen keine Konfiguration.
Tipp
Wenn Ihr Synapse Spark-Pool keine benutzerdefinierten Konfigurationen, keine benutzerdefinierten Bibliotheken und keine spezifischen Anforderungen an die Knotengröße über "Medium" verfügt, migrieren Sie den Pool nicht. Lassen Sie stattdessen Ihre Notebooks und Spark-Auftragsdefinitionen die Fabric-Standardeinstellungen für den Starter-Pool des Arbeitsbereichs verwenden. Mit diesem Ansatz erhalten Sie die schnellsten Startzeiten und keinen Aufwand für die Poolverwaltung. Erstellen Sie nur einen benutzerdefinierten Pool oder eine benutzerdefinierte Umgebung, wenn Sie einen bestimmten Bedarf haben.
Wann ein benutzerdefinierter Pool oder eine benutzerdefinierte Umgebung erstellt werden soll
Erstellen Sie einen Fabric benutzerdefinierten Pool und/oder eine Umgebung nur, wenn Ihre Workload Folgendes erfordert:
- Eine bestimmte Knotengröße (Small, Large, XLarge, XXLarge), die sich von dem standardmäßigen Medium unterscheidet.
- Benutzerdefinierte Bibliotheken (Pip-Pakete, Conda-Pakete, JARs, Wheels), die sich nicht in der integrierten Fabric-Laufzeitumgebung befinden.
- Benutzerdefinierte Spark-Eigenschaften (z. B.
spark.sql.shuffle.partitions,spark.executor.memory) zusätzlich zu den Standardwerten. - Verwaltete private Endpunkte für den Zugriff auf private Datenquellen (erfordert benutzerdefinierte Pools).
- Eine bestimmte Spark-Laufzeitversion, die sich von der Standardeinstellung des Arbeitsbereichs unterscheidet.
Konfiguration und Bibliotheksmigration
Migrieren Sie Spark-Konfigurationen und -Bibliotheken zu Fabric Umgebungen.
Ausführliche Schritte zum Migrieren von Bibliotheken zu Fabric Umgebungen finden Sie unter Migrate Spark Libraries from Azure Synapse to Fabric.
Exportieren sie Spark-Konfigurationen. Wechseln Sie in Synapse Studio zu Verwalten>Spark-Pools>, wählen Sie den Pool > aus und gehen Sie zu Konfigurationen + Bibliotheken>, herunterladen als
.yml/.conf/.json.In die Umgebung importieren. Erstellen Sie in Fabric ein Umgebungsartefakt. Wechseln Sie zu Spark Compute>Spark Properties>Laden Sie die exportierte Datei hoch
Sparkproperties.yml.Migrieren von Bibliotheken. Laden Sie für Bibliotheken auf Poolebene Pakete (Wheels, JARs, Tars) in den Bibliotheksbereich der Umgebung hoch. Fügen Sie die PyPI/Conda-Pakete zur Konfiguration der öffentlichen Bibliothek der Umgebung hinzu.
Important
Bibliothekseinstellungen auf Arbeitsbereichsebene in Fabric sind veraltet. Migrieren Sie alle Bibliotheken zu Environment-Artefakten. Die Migration entfernt dauerhaft vorhandene Konfigurationen auf Arbeitsbereichsebene– laden Sie alle Einstellungen herunter, bevor Sie Umgebungen aktivieren.
Bibliothekskompatibilität: Synapse vs. Fabric
Fabric Runtime 1.3 (Spark 3.5) enthält 223 Python, 183 Java/Scala- und 135 R-Bibliotheken. Die meisten Synapse-Bibliotheken sind in Fabric verfügbar, aber es gibt Lücken, die Laufzeitfehler verursachen können, wenn sie vor der Migration nicht behoben werden.
Um zu ermitteln, welche Bibliotheken Ihre Notizbücher tatsächlich verwenden, führen Sie diese Überprüfungen aus, bevor Sie die Lückentabellen überprüfen:
-
Python notebooks: Suchen Sie nach
import- undfrom ... import-Anweisungen für alle Dateien.py/.ipynb. -
Java/Scala-Notizbücher und SJDs: Suchen Sie nach
import-Anweisungen und Maven-Koordinaten; suchen Sie nach Paketen wiecom.azure.cosmos.sparkodercom.microsoft.kusto.spark. -
Exportieren Sie die vollständige Abhängigkeitsliste: Führen Sie
pip freezein einem Synapse-Notizbuch aus, vergleichen Sie es mit dem Fabric Runtime 1.3-Manifest. Nur Bibliotheken, die sowohl in Ihrerpip freezeAusgabe als auch in den nachstehenden Lückentabellen angezeigt werden, benötigen Eine Aktion. - Poolebene und benutzerdefinierte Bibliotheken auf Arbeitsbereichsebene: Wechseln Sie in Synapse Studio zu Verwalten>Apache Spark Pools>, wählen Sie pool > und Pakete, um benutzerdefinierte Bibliotheken anzuzeigen, die in eine Fabric-Umgebung neu geladen werden müssen.
Python Bibliotheken, die in Fabric fehlen
| Kategorie | Bibliotheken | Action |
|---|---|---|
| CUDA / GPU (9 Libs) | libcublas, libcufft, libcufile, libcurand, libcusolver, libcusparse, libnpp, libnvfatbin, libnvjitlink, libnvjpeg | Nicht verfügbar – Fabric unterstützt keine GPU-Pools. Umgestalten Sie GPU-Workloads, um CPU-basierte Alternativen zu verwenden oder synapse beizubehalten. |
| HTTP/API-Clients | httpx, httpcore, h11, google-auth, jmespath | Über Environment installieren: pip install httpx google-auth jmespath |
| ML / Interpretationsfähigkeit | interpretieren, Interpret-Kern | Über Umgebung installieren: pip install interpret |
| Serialisierung von Daten | marshmallow, jsonpickle, frozendict, fixedint | Bei Bedarf über die Umgebung installieren: pip install marshmallow jsonpickle |
| Protokollierung / Telemetrie | fluent-logger, menschlich, library-metadata-cooker, impulse-python-handler | fluent-logger: Installieren, falls verwendet. Andere sind Synapse-internal – wahrscheinlich nicht erforderlich. |
| Jupyter Internals | jupyter-client, jupyter-core, jupyter-ui-poll, jupyterlab-widgets, ipython-pygments-lexers | Fabric verwaltet die Jupyter-Infrastruktur intern. Diese Bibliotheken werden in der Regel nicht im Benutzercode benötigt. |
| System/C-Bibliotheken | libgcc, libstdcxx, libgrpc, libabseil, libexpat, libnsl, libzlib | Niedrige Systembibliotheken. In der Regel nicht direkt importiert. Installieren Sie nur, wenn Sie über C-Erweiterungen verfügen, die von ihnen abhängig sind. |
| Datei/ Parallelität | filelock, fsspec, knack | Installieren über die Umgebung, falls verwendet: pip install filelock fsspec |
Java/Scala-Bibliotheken fehlen aus Fabric
| Bibliothek | Synapse-Version | Action |
|---|---|---|
| Azure-cosmos-analytics-spark | 2.2.5 | Installieren Sie als benutzerdefiniertes JAR in der Fabric Umgebung, wenn Ihre Spark-Aufträge den Cosmos DB Analytics Connector verwenden. |
| junit-jupiter-params | 5.5.2 | Nur Testbibliothek. In Produktionsnotizbüchern nicht erforderlich. |
| junit-platform-commons | 1.5.2 | Nur Testbibliothek. In Produktionsnotizbüchern nicht erforderlich. |
R-Bibliotheken
Nur ein Unterschied: Synapse enthält das lightgbm R-Paket (v4.6.0), das nicht in Fabric ist. Installieren Sie bei Bedarf über die Umgebungsvariable. Fabric fügt FabricTelemetry (v1.0.2) hinzu, das Fabric-intern ist.
Wichtige Versionsunterschiede
68 Python Bibliotheken sind auf beiden Plattformen vorhanden, jedoch mit unterschiedlichen Versionen. Die meisten sind Geringfügige Versionsunterschiede, aber 17 weisen Hauptversionssprünge auf, die sich auf das Verhalten auswirken können.
| Bibliothek | Fabric-Version | Synapse-Version | Auswirkung |
|---|---|---|---|
| libxgboost | 2.0.3 | 3.0.1 | XGBoost-API-Änderungen zwischen v2 und v3. Testmodellschulungs-/Vorhersagecode. |
| Flasche | 2.2.5 | 3.0.3 | Flask 3.x hat bahnbrechende Änderungen. Wenn Flask-APIs aus Notizbüchern bereitgestellt werden, testen Sie sorgfältig. |
| Lxml | 4.9.3 | 5.3.0 | Kleinere API-Änderungen. Testen Sie XML-Analyseworkflows. |
| libprotobuf | 3.20.3 | 4.25.3 | Protobuf 4.x hat änderungen für benutzerdefinierte Protodefinitionen. |
| markupsafe | 2.1.3 | 3.0.2 | MarkupSafe 3.x legt Python 3.7-Unterstützung ab, die API ist jedoch kompatibel. |
| libpq | 12,17 | 17.4 | PostgreSQL-Clientbibliothek. Hauptversionssprung – DB-Verbindungen testen. |
| libgcc-ng / libstdcxx-ng | 11.2.0 | 15.2.0 | GCC-Laufzeit. Kann sich auf die C-Erweiterungskompatibilität auswirken. |
Note
Synapse enthält in der Regel neuere Versionen von Bibliotheken auf Systemebene (GCC, Protobuf, libpq), während Fabric neuere Versionen von Daten-/ML-Bibliotheken (insgesamt mehr Python-Pakete) ausliefert. Wenn Sie eine bestimmte Version benötigen, heften Sie sie in Ihrer Fabric Umgebungskonfiguration an.
Tipp
Führen Sie eine schnelle Kompatibilitätsprüfung aus: Exportieren sie die Bibliotheksliste Ihres Synapse-Pools (pip freeze), vergleichen Sie mit dem Fabric Runtime 1.3-Manifest und installieren Sie alle fehlenden Bibliotheken in Ihrer Fabric Umgebung vor dem Ausführen migrierter Notizbücher. Einen Zeilenvergleich jeder integrierten Bibliothek und Version zwischen Fabric- und Synapse Spark-Laufzeiten finden Sie unter microsoft/synapse-spark-runtime GitHub Repository.
Verwandte Inhalte
- Phase 1: Migrationsstrategie und -planung
- Phase 3: Hive-Metastore und Datenmigration
- Phase 4: Sicherheits- und Governancemigration
- Migrieren von Azure Synapse-Notizbüchern zu Fabric
- Migrieren von Spark-Auftragsdefinitionen von Azure Synapse zu Fabric
- Migrieren von Spark-Pools von Azure Synapse zu Fabric