Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł to faza 2 z 4 w serii najlepszych praktyk migracji z Azure Synapse Spark do Microsoft Fabric.
Użyj tego artykułu, aby przeprowadzić migrację obciążeń platformy Spark z Azure Synapse do Microsoft Fabric. W tym artykule opisano uruchamianie Asystenta migracji, refaktoryzowanie wzorców kodu, których nie można automatycznie konwertować, oraz migrowanie konfiguracji, środowisk i bibliotek puli Spark.
W tym artykule dowiesz się, jak:
- Zapoznaj się z przepływem pracy migracji dla standardowych obszarów roboczych Synapse (niezintegrowanych z Git) i tych z obsługą Git.
- Użyj Asystent migracji Spark do migrowania notesów, definicji zadań platformy Spark i pul.
- Refaktoryzuj wzorce kodu specyficzne dla usługi Synapse pod kątem zgodności Fabric.
- Migruj ustawienia, środowiska i biblioteki puli Spark.
- Identyfikuj i rozwiąż luki w zgodności biblioteki między Synapse i Fabric.
Migrowanie za pomocą Asystent migracji
Platforma Spark Asystent migracji automatyzuje migrację notesów, definicji zadań platformy Spark, pul i metadanych bazy danych typu lake z usługi Synapse do Fabric. Asystent kopiuje i przekształca elementy, ale nie ukończy migracji — nadal trzeba refaktoryzować kod, uzgadniać luki konfiguracji i weryfikować wyniki.
Aby uzyskać instrukcje krok po kroku dotyczące uruchamiania asystenta, zobacz temat Asystent migracji Spark Synapse do Fabric Spark (wersja zapoznawcza).
Asystent migruje następujące elementy:
- Pule Spark są migrowane do Fabric Pools i odpowiednich artefaktów środowiskowych.
- Notesy i powiązane z nimi środowiska operacyjne są migrowane.
- Definicje zadań platformy Spark są migrowane ze skojarzonymi środowiskami.
- Bazy danych Lake są mapowane na schematy Fabric; zarządzane tabele Delta są migrowane za pomocą skrótów katalogu OneLake.
Important
Konfiguracje platformy Spark, biblioteki niestandardowe i niestandardowe ustawienia funkcji wykonawczej nie są migrowane przez asystenta. Należy je skonfigurować ręcznie w środowiskach Fabric. Nie można migrować obszarów roboczych usługi Synapse w sieci wirtualnej za pomocą asystenta.
Migracja standardowego (nie-Git) obszaru roboczego
W przypadku obszarów roboczych, w których notesy i dyski SSD są przechowywane bezpośrednio w usłudze Synapse (a nie w repozytorium Git):
Uruchom Asystenta Migracji Spark z obszaru roboczego Fabric (Migrate>Elementy inżynierii danych). Wybierz źródłowy obszar roboczy usługi Synapse i zmigruj wszystkie elementy platformy Spark.
Zweryfikuj zależności: upewnij się, że jest używana ta sama wersja platformy Spark. Jeśli notesy odwołują się do innych notesów za pomocą
mssparkutils.notebook.run(), upewnij się, że zostały one również zmigrowane. Asystent migracji zachowuje strukturę folderów (Fabric obsługuje maksymalnie 10 poziomów zagnieżdżania).Refaktoryzować kod: zastąp
mssparkutilsciągiemnotebookutils, zastąp odwołania do połączonych usług Fabric Connections, i zaktualizuj ścieżki plików. Aby uzyskać szczegółowe informacje, zobacz sekcję Refaktoryzacja kodu platformy Spark .
Migracja obszaru roboczego z obsługą usługi Git
W przypadku obszarów roboczych, w których zeszyty i SJDs są przechowywane w repozytorium Azure DevOps lub GitHub, pamiętaj, że Synapse i Fabric używają różnych formatów serializacji dla Git. Usługa Synapse przechowuje notesy w formacie JSON; Fabric używa formatu źródłowego .py/.scala lub .ipynb. Nie można skierować obszaru roboczego Fabric bezpośrednio do tej samej gałęzi Synapse Git.
Migrowanie elementów. Użyj Spark Asystent migracji, aby migrować notatniki i SJD z workspace Synapse do workspace Fabric. Spowoduje to przekonwertowanie elementów na format zgodny z Fabric.
Refaktoryzacja kodu. Zastosuj tę samą refaktoryzację kodu co w standardowym scenariuszu — zastąp
mssparkutils, zaktualizuj ścieżki plików, zastąp połączone usługi. Aby uzyskać szczegółowe informacje, zobacz sekcję Refaktoryzacja kodu platformy Spark .Połącz środowisko Fabric z repozytorium Git. Połącz obszar roboczy Fabric z nową gałęzią lub folderem w repozytorium (Ustawienia obszaru roboczego>Source Control>Git Integration). Aby uniknąć konfliktów, użyj oddzielnej gałęzi lub folderu z zawartości usługi Synapse. Zatwierdź zawartość obszaru roboczego Fabric, aby utworzyć nową gałąź.
Konfigurowanie potoków wdrażania (opcjonalnie). Skonfiguruj potoki wdrażania Fabric (Dev → Test → Prod) na potrzeby procesów ciągłej integracji/ciągłego wdrażania. Fabric obsługuje automatyczne wiązanie dla domyślnych lakehouse’ów i dołączonych środowisk podczas wdrażania między etapami.
Tip
Zachowaj gałąź Git usługi Synapse bez zmian jako odniesienie historyczne. Utwórz nową gałąź lub folder dla zawartości Fabric. Fabric przechowuje notatniki jako pliki źródłowe (.py dla PySpark), a nie JSON, co zapewnia czystsze różnice w Git do przeglądu kodu.
Refaktoryzacja kodu platformy Spark
Po przeprowadzeniu migracji notesów i definicji zadań Spark należy naprawić wzorce kodu, których Asystent migracji nie może przekonwertować automatycznie. W tej sekcji opisano zastępowanie interfejsów API specyficznych dla usługi Synapse, aktualizowanie ścieżek plików i zmienianie wzorców poświadczeń w celu pracy z Fabric.
Audit wstępnego refaktoryzowania
Przed rozwiązaniem poszczególnych wzorców refaktoryzacji uruchom wyszukiwanie w całej bazie kodu we wszystkich notesach, aby zidentyfikować kod specyficzny dla usługi Synapse, który wymaga zmian.
| Wzorzec wyszukiwania | Kategoria | Wymagana akcja |
|---|---|---|
spark.synapse.linkedService |
Połączone usługi | Usuń; zastąp bezpośrednim uwierzytelnianiem punktu końcowego lub tajnymi danymi Key Vault |
getSecretWithLS |
Credentials | Zastąp za pomocą getSecret(vaultUrl, secretName) |
TokenLibrary |
Token/Uwierzytelnianie | Usunąć; użyj bezpośredniej konfiguracji OAuth lub notebookutils |
synapsesql |
Łącznik SQL | Zamień spark.read.synapsesql() na odczyty w formacie Delta |
mssparkutils |
Narzędzia platformy Spark | Zastąp za pomocą notebookutils (większość interfejsów API jest identyczna) |
spark.catalog.listDatabases |
Interfejs API katalogu | Zastąp spark.sql("SHOW DATABASES") |
spark.catalog.currentDatabase |
Interfejs API katalogu | Zastąp spark.sql("SELECT CURRENT_DATABASE()") |
spark.catalog.getDatabase |
Interfejs API katalogu | Zastąp spark.sql("DESCRIBE DATABASE ...") |
spark.catalog.listFunctions |
Interfejs API katalogu | Nie jest obsługiwane w "Fabric" — usuń |
spark.catalog.registerFunction |
Interfejs API katalogu | Nieobsługiwane — zamiast tego użyj spark.udf.register() |
spark.catalog.functionExists |
Interfejs API katalogu | Nieobsługiwane przez Fabric — usuń |
LinkedServiceBasedTokenProvider |
Dostawca uwierzytelniania | Zastąp ClientCredsTokenProvider |
getPropertiesAsMap |
Połączone usługi | Usuń; Skonfiguruj bezpośrednio konto magazynowe |
spark.storage.synapse |
Połączone usługi | Usuń — nieobsługiwane w Fabric |
/user/trusted-service-user/ |
Ścieżki plików | Zastąp ścieżką OneLake lub ścieżką skrótu |
cosmos.oltp |
Cosmos DB | Aktualizacja w celu używania Key Vault dla danych poufnych zamiast usługi połączonej |
kusto.spark.synapse |
Kusto/ADX | Zastąp uwierzytelnianie usługi powiązanej przy użyciu accessToken przez getToken() |
Tip
Uruchom te wyszukiwania w całym repozytorium notesów przed migracją. Laptopy bez żadnych dopasowań są bezpieczne do migracji w obecnym stanie. Notatniki zawierające dopasowania powinny mieć priorytet dla refaktoryzacji kodu, stosując się do szczegółowych wskazówek w poniższych sekcjach.
Użycie ścieżki pliku
Zaktualizuj notesy usługi Synapse, które używają ścieżek względnych lub ścieżek magazynu zarządzanego przez usługę Synapse, aby korzystać z bezpośrednich ścieżek abfss:// lub ścieżek OneLake w Fabric.
| Przed (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>") |
Tip
Zastąp wszystkie ścieżki magazynowe zarządzane przez usługę Synapse ścieżkami z OneLake (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...). W przypadku danych usługi ADLS Gen2 utwórz skróty OneLake i odwołuj się do ścieżek skrótów.
Interfejs API katalogu Spark
Fabric nie obsługuje kilku metod spark.catalog. Zastąp je odpowiednikami spark SQL.
| Przed (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() |
Nieobsługiwane w Fabric — usuń lub pomiń |
spark.catalog.registerFunction(name, fn) |
Nieobsługiwane w Fabric — zamiast tego użyj spark.udf.register() |
spark.catalog.functionExists(name) |
Nieobsługiwane w Fabric – usuń lub pomiń |
Note
spark.catalog metody tabeli, takie jak createTable(), tableExists() i listTables() działają normalnie w Fabric. Tylko metody wykazu na poziomie bazy danych i na poziomie funkcji wymagają refaktoryzacji.
Narzędzia MSSparkUtils i NotebookUtils
Zastąp wywołania mssparkutils odpowiednikami Fabric notebookutils. Najczęstsze zmiany związane z poświadczeniami to:
| Przed (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") |
W Fabric pobieranie tajnych danych na podstawie połączonej usługi (getSecretWithLS) nie jest obsługiwane. Zamiast tego należy odwołać się bezpośrednio do adresu URL Key Vault przy użyciu notebookutils.credentials.getSecret(vaultUrl, secretName). Ten sam wzorzec dotyczy TokenLibrary.getSecret() wywołań.
Note
Większość metod mssparkutils.fs (na przykład ls, cp, mv, rm, mkdirs, head) działa identycznie jak notebookutils.fs w Fabric. Podstawowe zmiany to metody poświadczeń oraz metody tajne i odwołania do ścieżki notebook.run().
łącznik Azure Data Explorer (Kusto)
Notatniki Synapse, które łączą się z usługą Azure Data Explorer (Kusto) za pomocą połączonych usług, muszą zostać zrefaktoryzowane w celu korzystania z bezpośredniego uwierzytelniania punktu końcowego.
| Przed (Synapse) | After (Fabric) |
|---|---|
.option("spark.synapse.linkedService", "AzureDataExplorer1") |
Usuń odwołanie do połączonej usługi |
| Odczyt z zestawem opcji połączonej usługi | .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net")) |
Zastąp opcję związaną z usługą opcją accessToken. Użyj notebookutils.credentials.getToken(), aby uzyskać token dla punktu końcowego klastra Kusto. Pozostałe opcje zapytania (kustoDatabase, kustoQuery) pozostają niezmienione.
Łącznik Cosmos DB
Zaktualizuj połączenia usługi Cosmos DB w usłudze Synapse, które używają usług połączonych lub getSecretWithLS.
| Przed (Synapse) | After (Fabric) |
|---|---|
.option("spark.synapse.linkedService", "CosmosDbLS") |
Usuwanie odwołania do połączonej usługi |
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") |
notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey") |
Zastąp odwołanie do połączonej usługi bezpośrednią konfiguracją punktu końcowego usługi Cosmos DB. Zapisz klucz konta usługi Cosmos DB w Azure Key Vault i pobierz go przy użyciu notebookutils.credentials.getSecret(vaultUrl, secretName) zamiast getSecretWithLS().
Odwołania do zlinkowanej usługi
Zastąp wszystkie odwołania do połączonej usługi Synapse w Fabric.
| Przed (Synapse) | After (Fabric) |
|---|---|
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) |
Usuń — nieobsługiwane w 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) |
Usuń — użyj bezpośredniego ciągu połączenia lub konfiguracji zasad usługi |
W Fabric nie ma połączonych usług. Zastąp dostawcę tokenów Synapse standardowymi poświadczeniami klienta OAuth (głównym użytkownikiem usługi). Skonfiguruj fs.azure.account.auth.type, oauth.provider.type, client.id, client.secret i client.endpoint bezpośrednio przy użyciu spark.conf.set().
Biblioteka tokenów
TokenLibrary Synapse do pobierania tokenów i odczytywania połączonych właściwości usług nie jest dostępny w Fabric. Zastąp go równoważnymi wzorcami.
| Przed (Synapse) | After (Fabric) |
|---|---|
TokenLibrary.getPropertiesAsMap(serviceConnection) |
Usunąć — bezpośrednio skonfigurować konto magazynowe |
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) |
W przypadku dostępu opartego na OAuth do usługi ADLS Gen2 skonfiguruj poświadczenia jednostki usługi bezpośrednio, przy użyciu spark.conf.set() kluczy specyficznych dla konta magazynu (na przykład fs.azure.account.auth.type.<account>.dfs.core.windows.net) zamiast polegać na powiązanych dostawcach tokenów usług.
Important
Przed przełączeniem przejrzyj wszystkie notesy pod kątem referencji do usług powiązanych. Wszystkie pozostałe wywołania spark.synapse.linkedService, TokenLibrary lub getSecretWithLS kończą się niepowodzeniem podczas wykonywania w Fabric.
Migracja definicji zadań platformy Spark
Definicje zadań platformy Spark (SJD) to konfiguracje zadań wsadowych odwołujące się do głównego pliku wykonywalnego (.py, .jarlub .R), opcjonalne biblioteki referencyjne, argumenty wiersza polecenia i kontekst usługi Lakehouse. Podczas gdy usługa Spark Asystent migracji automatycznie obsługuje migrację SJD, ważne różnice między usługami Synapse i Fabric SJD wymagają uwagi.
Kluczowe różnice między usługami Synapse i Fabric SJD
Wymagany kontekst usługi Lakehouse. W Fabric każda usługa SJD musi mieć co najmniej jeden lakehouse skojarzony z nią. Ten lakehouse służy jako domyślny system plików dla środowiska uruchomieniowego platformy Spark. Każdy kod używający ścieżek względnych odczytuje i zapisuje z domyślnej bazy danych lakehouse. W usłudze Synapse SJDs używają domyślnego magazynu obszaru roboczego (ADLS Gen2) jako domyślny system plików.
Obsługiwane języki. Fabric obsługuje rozwiązanie PySpark (Python), Spark (Scala/Java) i SparkR. .NET dla platformy Spark (C#/F#) nie jest obsługiwana w Fabric. Przed migracją należy ponownie napisać te obciążenia w Python lub Scala.
Polityki ponawiania. Fabric SJDs obsługują wbudowane zasady ponawiania, takie jak maksymalna liczba prób ponawiania i interwał ponawiania. Ta funkcja jest przydatna w przypadku zadań Spark Structured Streaming, które muszą być uruchamiane ciągle.
Powiązanie środowiska. W usłudze Synapse dyski SJD są powiązane z pulą platformy Spark. W Fabricu SJDs są powiązane ze środowiskiem, które zawiera konfigurację puli, biblioteki i właściwości Spark. Asystent Migracji automatycznie mapuje odwołania do puli Synapse na środowiska Fabric.
Harmonogramowanie. Fabric SJD mają wbudowane planowanie (Settings>Schedule) bez konieczności oddzielnego potoku. W usłudze Synapse planowanie SJD wymaga potoku z aktywnością Spark Job. Jeśli masz potoki Synapse, które tylko uruchamiają zadania SJD, rozważ użycie wbudowanego harmonogramu SJD w Fabric zamiast migrowania potoków.
Importowanie/eksportowanie. Usługa Synapse obsługuje import i eksport JSON z wykorzystaniem interfejsu użytkownika dla SJDs. Fabric nie obsługuje importowania ani eksportowania interfejsu użytkownika. Aby programowo tworzyć lub aktualizować SJDs, użyj programu Spark Asystent migracji lub Fabric REST API.
Refaktoryzacja kodu SJD
Te same wzorce refaktoryzacji kodu w tym artykule dotyczą głównych plików SJD. Zmiany dzielą się na dwie kategorie.
Zmiany kodu źródłowego (wewnątrz .py, .jar lub .R głównego pliku):
- Zastąp
mssparkutilsnotebookutilsw przypadku operacji poświadczeń i systemu plików. - Zaktualizuj zakodowane na stałe ścieżki plików w kodzie do ścieżek OneLake
abfss://lub ścieżek skrótów, gdy jest to potrzebne. Dyski SJD, które używają tylko ścieżek względnych względem domyślnej usługi Lakehouse, mogą nie wymagać zmian. - Zastąp odwołania do usług zlinkowanych w kodzie programu wpisami tajnymi Key Vault lub połączeniami Fabric.
Note
Połączenia DMTS nie są jeszcze obsługiwane w definicjach zadań Spark w Fabric (obsługiwane tylko w notesach). Jeśli kod SJD używa usługi DMTS, zrefaktoryzuj go, aby używać bezpośredniego uwierzytelniania punktu końcowego.
Zmiany konfiguracji SJD (w parametrach elementu SJD Fabric):
- Sprawdź, czy ścieżki usługi ADLS Gen2, do których odwołuje się główne pliki definicji, są nadal dostępne w obszarze roboczym Fabric. Jeśli pliki były przechowywane w magazynie wewnętrznym obszaru roboczego usługi Synapse, przekaż je ponownie do usługi Fabric SJD lub przenieś je do dostępnej lokalizacji usługi ADLS Gen2.
- Sprawdź, czy wszystkie pliki referencyjne (
.py,.R,.jar) są dostępne po migracji. Przekaż ponownie wszystkie pliki przechowywane w magazynie wewnętrznym obszaru roboczego usługi Synapse. - Jeśli argumenty wiersza polecenia zawierają ścieżki specyficzne dla usługi Synapse lub ciągi połączeniowe, zaktualizuj je do odpowiedników Fabric.
Migrowanie pul, środowisk i bibliotek
Po migracji notatników i definicji zadań Spark, należy zdecydować o strategii dotyczącej puli i środowiska. W tej sekcji wyjaśniono, kiedy można używać pul startowych Fabric (zamiast migrowania), kiedy tworzyć środowiska niestandardowe oraz jak identyfikować i rozwiązywać luki w zgodności bibliotek.
Migracja puli platformy Spark
pule początkowe Fabric
Pule startowe platformy Fabric zapewniają uruchamianie sesji Spark na poziomie sekund — to znacząca poprawa w stosunku do pul Synapse Spark, które wymagają trwających kilka minut zimnych startów klastrów. Pule początkowe są gotowe do użycia z platformy i nie wymagają żadnej konfiguracji.
Tip
Jeśli pula Synapse Spark nie ma niestandardowych konfiguracji, nie ma bibliotek niestandardowych i nie ma określonych wymagań dotyczących rozmiaru węzła poza średnią — nie migruj puli. Zamiast tego pozwól, aby notesy i konfiguracje zadań platformy Spark używały domyślnych ustawień początkowej puli w obszarze roboczym Fabric. Takie podejście zapewnia najszybsze czasy uruchamiania i zerowe obciążenie związane z zarządzaniem pulą. Utwórz pulę niestandardową lub środowisko tylko wtedy, gdy masz określoną potrzebę.
Kiedy utworzyć niestandardową pulę lub środowisko
Utwórz niestandardową pulę i/lub środowisko Fabric tylko wtedy, gdy jest to wymagane przez pracę obciążenia.
- Określony rozmiar węzła (Mały, Duży, XLarge, XXLarge) różni się od domyślnego medium.
- Biblioteki niestandardowe (pakiety pip, pakiety conda, pliki JAR, pliki wheel), które nie są w wbudowanym środowisku uruchomieniowym Fabric.
- Niestandardowe właściwości platformy Spark (na przykład
spark.sql.shuffle.partitions,spark.executor.memory) wykraczające poza wartości domyślne. - Zarządzane prywatne punkty końcowe na potrzeby uzyskiwania dostępu do prywatnych źródeł danych (wymaga pul niestandardowych).
- Określona wersja środowiska uruchomieniowego platformy Spark różni się od domyślnej wersji obszaru roboczego.
Migracja konfiguracji i biblioteki
Migrowanie konfiguracji i bibliotek platformy Spark do środowisk Fabric.
Aby uzyskać szczegółowe instrukcje dotyczące migrowania bibliotek do środowisk Fabric, zobacz
Eksportowanie konfiguracji platformy Spark. W Synapse Studio przejdź do Manage>Spark Pools> wybierz pulę >Configurations + Libraries> pobierz jako
.yml/.conf/.json.Importuj do środowiska. W Fabric utwórz artefakt Środowisko. Przejdź do Spark Compute>Spark Properties> i załaduj wyeksportowany
Sparkproperties.ymlplik.Migrowanie bibliotek. W przypadku bibliotek na poziomie puli przekaż pakiety (koła, pliki JARs, tars) do sekcji Biblioteka środowiska. W przypadku pakietów PyPI/Conda dodaj je do konfiguracji biblioteki publicznej środowiska.
Important
Ustawienia biblioteki na poziomie obszaru roboczego w Fabric są przestarzałe. Przenieś wszystkie biblioteki do artefaktów środowiska. Migracja trwale usuwa istniejące konfiguracje na poziomie obszaru roboczego — pobierz wszystkie ustawienia przed włączeniem środowisk.
Zgodność biblioteki: Synapse versus Fabric
Fabric Runtime 1.3 (Spark 3.5) zawiera 223 biblioteki Python, 183 Java/Scala i 135 R. Większość bibliotek usługi Synapse jest dostępna w Fabric, ale istnieją luki, które mogą powodować błędy środowiska uruchomieniowego, jeśli nie zostały rozwiązane przed migracją.
Aby zidentyfikować, które biblioteki są faktycznie używane przez twoje notatniki, uruchom te sprawdzenia przed przejrzeniem tabel różnic:
-
Python notebooks: Wyszukaj
importifrom ... importinstrukcji we wszystkich.py/.ipynbplikach. -
Java/Scala notebooks i SJDs: Wyszukaj instrukcje
importi koordynaty Maven; poszukaj pakietów takich jakcom.azure.cosmos.sparklubcom.microsoft.kusto.spark. -
Eksportuj pełną listę zależności: Uruchom
pip freezew notesie usługi Synapse, porównaj z manifestem środowiska uruchomieniowego Fabric Runtime 1.3. Tylko biblioteki, które są wyświetlane zarównopip freezew danych wyjściowych, jak i w tabelach luk poniżej, wymagają działania. - Biblioteki niestandardowe na poziomie puli i na poziomie obszaru roboczego: W Synapse Studio przejdź do Zarządzanie>Apache Spark Pools> wybierz pulę >Pakiety aby wyświetlić biblioteki niestandardowe, które muszą zostać ponownie załadowane do środowiska Fabric.
brak bibliotek Python z Fabric
| Kategoria | biblioteki | Akcja |
|---|---|---|
| CUDA / GPU (9 libs) | libcublas, libcufft, libcufile, libcurand, libcusolver, libcusparse, libnvfatbin, libnvjitlink, libnvjpeg | Niedostępne — Fabric nie obsługuje pul procesorów GPU. Refaktoryzuj obciążenia procesora GPU, aby używać alternatyw opartych na procesorze CPU lub zachować je w usłudze Synapse. |
| Klienci HTTP/API | httpx, httpcore, h11, google-auth, jmespath | Zainstaluj za pomocą środowiska: pip install httpx google-auth jmespath |
| Uczenie maszynowe /możliwość interpretacji | interpretacja, jądra interpretera | Zainstaluj za pomocą środowiska: pip install interpret |
| Serializacja danych | marshmallow, jsonpickle, frozendict, fixedint | Zainstaluj za pomocą środowiska systemowego, jeśli jest to wymagane: pip install marshmallow jsonpickle |
| Rejestrowanie/telemetria | fluent-logger, humanfriendly, library-metadata-cooker, impulse-python-handler | fluent-logger: zainstaluj, jeśli jest używany. Inne są wewnętrzne dla Synapse — prawdopodobnie nie są potrzebne. |
| Wewnętrzne elementy jupyter | jupyter-client, jupyter-core, jupyter-ui-poll, jupyterlab-widgets, ipython-pygments-lexers | Fabric zarządza infrastrukturą jupyter wewnętrznie. Te biblioteki zwykle nie są potrzebne w kodzie użytkownika. |
| Biblioteki systemowe/C | libgcc, libstdcxx, libgrpc, libabseil, libexpat, libnsl, libzlib | Biblioteki systemowe niskiego poziomu. Zwykle nie są importowane bezpośrednio. Zainstaluj tylko wtedy, gdy masz rozszerzenia języka C, które są od nich zależne. |
| Plik/współbieżność | filelock, fsspec, knack | Zainstaluj za pomocą środowiska, jeśli jest używane: pip install filelock fsspec |
Brak bibliotek Java/Scala w Fabric
| Biblioteka | Wersja usługi Synapse | Akcja |
|---|---|---|
| azure-cosmos-analytics-spark | 2.2.5 | Zainstaluj jako niestandardowy plik JAR w środowisku Fabric, jeśli zadania Spark używają łącznika analitycznego Cosmos DB. |
| junit-jupiter-params | 5.5.2 | Biblioteka tylko do testowania. Nie są potrzebne w notesach produkcyjnych. |
| junit-platform-commons | 1.5.2 | Biblioteka tylko do testowania. Nie są potrzebne w notebookach produkcyjnych. |
Biblioteki języka R
Tylko jedna różnica: usługa Synapse zawiera pakiet lightgbm R (wersja 4.6.0), który nie znajduje się w Fabric. W razie potrzeby zainstaluj program za pośrednictwem środowiska. Fabric dodaje FabricTelemetry (wersja 1.0.2), która jest wewnętrzny Fabric.
Istotne różnice wersji
68 Python biblioteki istnieją na obu platformach, ale w różnych wersjach. Większość z tych wersji ma niewielkie różnice, ale 17 charakteryzuje się dużymi zmianami wersji, które mogą mieć wpływ na zachowanie.
| Biblioteka | Wersja sieci szkieletowej | Wersja usługi Synapse | Wpływ |
|---|---|---|---|
| libxgboost | 2.0.3 | 3.0.1 | Zmiany interfejsu API XGBoost między wersjami 2 i 3. Testowanie kodu dla trenowania i przewidywania modelu. |
| kolba | 2.2.5 | 3.0.3 | Platforma Flask 3.x ma zmiany powodujące niezgodność. Jeśli obsługujesz interfejsy API Flask z notatników, przetestuj dokładnie. |
| Lxml | 4.9.3 | 5.3.0 | Drobne zmiany interfejsu API. Testowanie przepływów pracy analizowania kodu XML. |
| libprotobuf | 3.20.3 | 4.25.3 | Protobuf 4.x wprowadza zmiany naruszające zgodność dla niestandardowych definicji proto. |
| markupsafe | 2.1.3 | 3.0.2 | MarkupSafe 3.x porzuca obsługę Pythona 3.7, ale interfejs API jest zgodny. |
| libpq | 12.17 | 17.4 | Biblioteka klienta postgreSQL. Przejście do głównej wersji — przetestuj połączenia baz danych. |
| libgcc-ng / libstdcxx-ng | 11.2.0 | 15.2.0 | Środowisko uruchomieniowe GCC. Może mieć wpływ na zgodność rozszerzenia języka C. |
Note
Usługa Synapse zwykle dostarcza nowsze wersje bibliotek na poziomie systemu (GCC, protobuf, libpq), podczas gdy Fabric dostarcza nowsze wersje bibliotek danych/uczenia maszynowego (więcej pakietów Python ogólnie). Jeśli potrzebujesz określonej wersji, zablokuj ją w konfiguracji środowiska Fabric.
Tip
Uruchom szybką kontrolę zgodności: wyeksportuj listę bibliotek puli Synapse (pip freeze), porównaj z manifestem Fabric Runtime 1.3 i wstępnie zainstaluj wszystkie brakujące biblioteki w środowisku Fabric przed uruchomieniem zmigrowanych notesów. Aby zapoznać się z porównaniem wiersz-po-wierszu każdej wbudowanej biblioteki i wersji między środowiskami uruchomieniowymi Fabric i Synapse Spark, odwiedź repozytorium GitHub microsoft/synapse-spark-runtime.