Faza 2. Migracja obciążenia platformy Spark

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 przenieść swoje obciążenia Spark z Azure Synapse do 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 iskr są migrowane do Fabric Pools oraz odpowiadających im elementó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. Musisz je skonfigurować ręcznie w elementach środowiska w 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):

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

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

  3. Refaktoryzować kod: zastąp mssparkutils ciągiem notebookutils, 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.

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

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

  3. 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łąź.

  4. 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 za pomocą spark.sql("SHOW DATABASES")
spark.catalog.currentDatabase Interfejs API katalogu Zastąp za pomocą spark.sql("SELECT CURRENT_DATABASE()")
spark.catalog.getDatabase Interfejs API katalogu Zastąp za pomocą 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 Nie jest obsługiwane w "Fabric" — usuń
LinkedServiceBasedTokenProvider Dostawca uwierzytelniania Zastąp za pomocą 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 Azure 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

Update Azure Cosmos DB connections in Synapse, które używają linked services lub getSecretWithLS.

Przed (Synapse) After (Fabric)
.option("spark.synapse.linkedService", "CosmosDbLS") Usuń odwołanie do połączonej usługi
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey")

Zamień linked service reference na bezpośrednią konfigurację endpoint Azure Cosmos DB. Przechowywać klucz konta Azure Cosmos DB w Azure Key Vault i pobierać go używając zamiast notebookutils.credentials.getSecret(vaultUrl, secretName) .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 Fabric SJD wiążą się z elementem środowiska, który zawiera konfigurację puli, biblioteki oraz właściwości Sparka. Asystent migracji automatycznie mapuje odniesienia do puli Synapse na elementy środowiska w 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 mssparkutilsnotebookutils w 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ą. Twórz własną pulę lub środowisko tylko wtedy, gdy masz konkretną 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

Migracja konfiguracji i bibliotek Spark do elementów środowiskowych w Fabric.

Szczegółowe kroki dotyczące migracji bibliotek do elementów środowiskowych znajdziesz w artykule Migrate Spark Libraries from Azure Synapse to Fabric.

  1. Eksportowanie konfiguracji platformy Spark. W Synapse Studio przejdź do Manage>Spark Pools> wybierz pulę >Configurations + Libraries> pobierz jako .yml/.conf/.json.

  2. Importuj do środowiska. W Fabric stwórz przedmiot środowiskowy. Przejdź do Spark Compute>Spark Properties> i załaduj wyeksportowany Sparkproperties.yml plik.

  3. Migrowanie bibliotek. Dla bibliotek na poziomie puli przesyłaj pakiety (koła, JAR-y, tary) do sekcji bibliotek ś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. Migracja wszystkich bibliotek do elementów środowiskowych. Migracja na stałe usuwa istniejące konfiguracje na poziomie przestrzeni roboczej — 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 import i from ... import instrukcji we wszystkich .py / .ipynb plikach.
  • Java/Scala notebooks i SJDs: Wyszukaj instrukcje import i koordynaty Maven; poszukaj pakietów takich jak com.azure.cosmos.spark lub com.microsoft.kusto.spark.
  • Eksportuj pełną listę zależności: Uruchom pip freeze w notesie usługi Synapse, porównaj z manifestem środowiska uruchomieniowego Fabric Runtime 1.3. Tylko biblioteki, które są wyświetlane zarówno pip freeze w danych wyjściowych, jak i w tabelach luk poniżej, wymagają działania.
  • Niestandardowe biblioteki na poziomie puli i przestrzeni roboczej: W Synapse Studio przejdź do Manage>Apache Spark Pools>, wybierz > puli, aby zobaczyć niestandardowe biblioteki, które trzeba ponownie przesłać do elementu środowiska.

brak bibliotek Python z Fabric

Kategoria biblioteki Akcja
CUDA / GPU (9 bibliotek) 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 Instalacja przez środowisko: pip install httpx google-auth jmespath
Uczenie maszynowe /możliwość interpretacji interpretacja, jądra interpretera Instalacja przez środowisko: pip install interpret
Serializacja danych pianka marshmallow, jsonpickle, mrożonek, fixint Zainstaluj przez środowisko, jeśli zajdzie taka potrzeba: 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 Instaluj przez środowisko, jeśli używasz: 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 JAR w elementie środowiska, jeśli Twoje zadania Spark korzystają z konektora 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 notesach 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. Zainstaluj przez środowisko, jeśli trzeba. 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 konkretnej wersji, przypisz ją do konfiguracji przedmiotów środowiskowych.

Tip

Wykonaj szybki test kompatybilności: wyeksportuj listę bibliotek w swojej puli Synapse (),pip freeze porównaj z manifestem Fabric Runtime 1.3 i zainstaluj brakujące biblioteki w elementach środowiska przed uruchomieniem migrowanych notebookó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.