Phase 2: Spark workload migration

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):

  1. 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.

  2. Ü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).

  3. Umgestaltungscode: Ersetzen Sie mssparkutils durch notebookutils, 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.

  1. 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.

  2. 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 ".

  3. 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.

  4. 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 mssparkutils durch notebookutils bei 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.

  1. 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.

  2. 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 .

  3. 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- und from ... 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 wie com.azure.cosmos.spark oder com.microsoft.kusto.spark.
  • Exportieren Sie die vollständige Abhängigkeitsliste: Führen Sie pip freeze in einem Synapse-Notizbuch aus, vergleichen Sie es mit dem Fabric Runtime 1.3-Manifest. Nur Bibliotheken, die sowohl in Ihrer pip freeze Ausgabe 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.