Fase 2: Migração da carga de trabalho do Spark

Este artigo é a Fase 2 de 4 da série de melhores práticas de migração do Azure Synapse Spark para Microsoft Fabric.

Use este artigo para migrar as suas cargas de trabalho Spark do Azure Synapse para o Microsoft Fabric. Este artigo aborda a execução do Assistente de Migração, refatoração de padrões de código que não podem ser convertidos automaticamente e migração de configurações, ambientes e bibliotecas do pool Spark.

Neste artigo, você aprenderá a:

  • Compreenda o fluxo de trabalho de migração para espaços de trabalho Synapse padrão (não Git) e habilitados para Git.
  • Use o Spark Assistente de Migração para migrar cadernos, definições de funções do Spark e pools.
  • Refatorar padrões de código específicos do Synapse para compatibilidade com Fabric.
  • Migrar as definições, ambientes e bibliotecas do pool Spark.
  • Identificar e resolver lacunas de compatibilidade de bibliotecas entre o Synapse e o Fabric.

Migre com o Assistente de Migração

O Spark Assistente de Migração automatiza a migração de notebooks, definições de trabalhos Spark, pools e metadados de bases de dados lacustres do Synapse para o Fabric. O assistente copia e transforma os seus itens, mas não completa a migração — ainda precisa de refatorar o código, conciliar lacunas de configuração e validar os resultados.

Para instruções passo a passo sobre como executar o assistente, veja Spark Synapse to Fabric Spark Assistente de Migração (Pré-visualização).

O assistente migra os seguintes itens:

  • Os Spark pools são migrados para os Fabric Pools e os artefactos correspondentes do Ambiente.
  • Os notebooks e os ambientes associados são migrados.
  • As definições de funções Spark são migradas com os ambientes associados.
  • As bases de dados Lake são mapeadas para esquemas Fabric; as tabelas Delta geridas são migradas através de atalhos de catálogo OneLake.

Importante

As configurações do Spark, bibliotecas personalizadas e definições do executor personalizado não são migradas pelo assistente. Deve configurar estes manualmente nos Ambientes Fabric. Os espaços de trabalho Synapse num VNet não podem ser migrados com o assistente.

Migração padrão de espaços de trabalho (não-Git)

Para espaços de trabalho onde cadernos e SJDs são armazenados diretamente no Synapse (não num repositório Git):

  1. Execute o Assistente de Migração do Spark a partir do seu espaço de trabalho Fabric (Migrar>itens de engenharia de dados). Selecione o espaço de trabalho Synapse de origem e migre todos os itens do Spark.

  2. Validar dependências: garantir que a mesma versão do Spark é utilizada. Se os cadernos referenciam outros cadernos através de mssparkutils.notebook.run(), verifique se aqueles também foram migrados. O Assistente de Migração preserva a estrutura de pastas (o Fabric suporta até 10 níveis de aninhamento).

  3. Refatorar código: substituir mssparkutils por notebookutils, substituir referências de serviço vinculadas por Fabric Connections e atualizar os caminhos dos ficheiros. Consulte a secção do código Refactor Spark para mais detalhes.

Migração de espaço de trabalho habilitada pelo Git

Para espaços de trabalho onde notebooks e SJDs são armazenados num repositório Azure DevOps ou GitHub, note-se que o Synapse e o Fabric usam formatos de serialização Git diferentes. O Synapse armazena cadernos como JSON; Fabric utiliza o formato de origem .py/.scala ou .ipynb. Não podes apontar diretamente um espaço de trabalho Fabric para o mesmo 'branch' Git do Synapse.

  1. Migrar itens. Use o Spark Assistente de Migração para migrar cadernos e SJDs do espaço de trabalho Synapse para um espaço de trabalho Fabric. Isto converte os itens para o formato compatível com Fabric.

  2. Refatorar código. Aplicar a mesma refatoração de código do cenário padrão — substituir mssparkutils, atualizar caminhos de ficheiros, substituir serviços ligados. Consulte a secção do código Refactor Spark para mais detalhes.

  3. Liga o espaço de trabalho do Fabric ao Git. Ligue o seu espaço de trabalho Fabric a um novo ramo ou pasta no seu repositório (Definições do Espaço de Trabalho>Controlo de Versão>Integração Git). Utilize um ramo ou pasta separado(a) do seu conteúdo do Synapse para evitar conflitos. Compromete o conteúdo do espaço de trabalho do Fabric para preencher o novo branch.

  4. Configurar canais de implantação (opcional). Configurar Fabric pipelines de implementação (Dev → Test → Prod) para CI/CD em curso. O Fabric suporta a ligação automática para casas de lago padrão e ambientes anexados ao serem implantados entre estágios.

Tip

Manter o teu branch do Synapse Git intacto como referência histórica. Crie um novo ramo ou pasta para conteúdo do Fabric. Fabric armazena os notebooks como ficheiros fonte (.py para PySpark) em vez de JSON, que fornece diferenciais Git mais limpos para revisão de código.

Refatorar código Spark

Depois de migrares os teus notebooks e definições de trabalhos no Spark, precisas de corrigir padrões de código que o Assistente de Migração não consegue converter automaticamente. Esta secção orienta-o na substituição de APIs específicas do Synapse, atualização de caminhos de ficheiros e alteração de padrões de credenciais para funcionar com o Fabric.

Auditoria pré-refatoração

Antes de abordar padrões individuais de refatoração, execute uma pesquisa em toda a base de código em todos os cadernos para identificar código específico do Synapse que necessite de alterações.

Padrão de Pesquisa Category Ação necessária
spark.synapse.linkedService Serviços Vinculados Remover; substituir por autenticação direta do endpoint ou credenciais do Key Vault
getSecretWithLS Credenciais Substituir por getSecret(vaultUrl, secretName)
TokenLibrary Token/Auth Remover; usar configuração direta de OAuth ou notebookutils
synapsesql SQL Connector Substituir spark.read.synapsesql() por leituras em formato Delta
mssparkutils Spark Utils Substituir por notebookutils (a maioria das APIs idênticas)
spark.catalog.listDatabases API de catálogo Substituir por spark.sql("SHOW DATABASES")
spark.catalog.currentDatabase API de catálogo Substituir por spark.sql("SELECT CURRENT_DATABASE()")
spark.catalog.getDatabase API de catálogo Substituir por spark.sql("DESCRIBE DATABASE ...")
spark.catalog.listFunctions API de catálogo Não é suportado no Fabric — remova
spark.catalog.registerFunction API de catálogo Não suportado — use spark.udf.register() em vez disso
spark.catalog.functionExists API de catálogo Não suportado no Fabric — remover
LinkedServiceBasedTokenProvider Fornecedor de Autorização Substituir por ClientCredsTokenProvider
getPropertiesAsMap Serviços Vinculados Remover; configurar diretamente a conta de armazenamento
spark.storage.synapse Serviços Vinculados Remover — não suportado no Fabric
/user/trusted-service-user/ Caminhos de ficheiros Substituir por caminho OneLake ou caminho de atalho
cosmos.oltp Cosmos DB Atualização para usar o Key Vault para secretos em vez de serviço vinculado
kusto.spark.synapse Kusto/ADX Substituir a autenticação do serviço associado por accessToken via getToken()

Tip

Executa estas pesquisas em todo o repositório do teu caderno antes da migração. Portáteis sem correspondências são seguros para serem migrados como estão. Os cadernos com correspondências devem ser priorizados para refatoração de código, utilizando as orientações detalhadas nas secções seguintes.

Utilização do caminho de ficheiro

Atualize os cadernos Synapse que utilizam caminhos relativos ou caminhos de armazenamento geridos pelo Synapse para utilizarem caminhos diretos abfss:// ou caminhos OneLake em Fabric.

Antes (Sinapse) Após (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

Substituir todos os caminhos de armazenamento geridos pelo Synapse por caminhos OneLake (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...). Em vez disso, para dados ADLS Gen2, crie atalhos OneLake e consulte os caminhos de atalho.

API do Catálogo Spark

Fabric não oferece suporte a diversos métodos spark.catalog. Substitui-os por equivalentes SQL do Spark.

Antes (Sinapse) Após (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() Não suportado no Fabric — remover ou pular
spark.catalog.registerFunction(name, fn) Não suportado em Fabric — use spark.udf.register() em vez disso
spark.catalog.functionExists(name) Não suportado no Fabric — remover ou pular

Note

Métodos de tabela spark.catalog como createTable(), tableExists() e listTables() funcionam normalmente em Fabric. Apenas os métodos de catálogo ao nível da base de dados e ao nível da função requerem refatoração.

MSSparkUtils e NotebookUtils

Substitua as chamadas mssparkutils pelas equivalentes de Fabric notebookutils. As alterações mais comuns relacionadas com credenciais são:

Antes (Sinapse) Após (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")

Em Fabric, a recuperação secreta baseada em serviços ligados (getSecretWithLS) não é suportada. Em vez disso, consulte diretamente o URL Key Vault usando notebookutils.credentials.getSecret(vaultUrl, secretName). O mesmo padrão aplica-se às TokenLibrary.getSecret() chamadas.

Note

A maioria dos métodos mssparkutils.fs (por exemplo, ls, cp, mv, rm, mkdirs, head) funcionam de forma idêntica a notebookutils.fs em Fabric. As principais alterações são métodos de credenciais e segredos, e notebook.run() referências de caminho.

Azure Data Explorer (Kusto) connector

Os cadernos Synapse que se ligam ao Azure Data Explorer (Kusto) através de serviços ligados devem ser refatorados para usar autenticação direta de endpoint.

Antes (Sinapse) Após (Fabric)
.option("spark.synapse.linkedService", "AzureDataExplorer1") Remover referência de serviço vinculado
Ler com opções de serviço ligado definidas .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net"))

Substitua a opção de serviço ligado por uma opção accessToken. Utilize notebookutils.credentials.getToken() para obter um token para o endpoint do seu cluster Kusto. As restantes opções de consulta (kustoDatabase, kustoQuery) permanecem inalteradas.

Conector Cosmos DB

Atualize as ligações do Cosmos DB no Synapse que utilizam serviços vinculados ou getSecretWithLS.

Antes (Sinapse) Após (Fabric)
.option("spark.synapse.linkedService", "CosmosDbLS") Remover referência de serviço vinculado
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey")

Substitua a referência de serviço associado por uma configuração direta do endpoint do Cosmos DB. Armazene a chave da conta da base de dados Cosmos no Azure Key Vault e recupere-a usando notebookutils.credentials.getSecret(vaultUrl, secretName) em vez de getSecretWithLS().

Referências de serviços ligadas

Substitua todas as referências de serviços associados ao Synapse no Fabric.

Antes (Sinapse) Após (Fabric)
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) Remover — não suportado no _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) Remover — usar cadeia de conexão direta ou configuração de principal de serviço

No Fabric, não existem serviços ligados. Substituir o fornecedor de tokens Synapse por credenciais padrão de cliente OAuth (principal de serviço). Configure fs.azure.account.auth.type, oauth.provider.type, client.id, client.secret e client.endpoint diretamente usando spark.conf.set().

Biblioteca de tokens

A funcionalidade TokenLibrary do Synapse para obter tokens e ler as propriedades de serviços vinculados não está disponível no Fabric. Substitua por padrões equivalentes.

Antes (Sinapse) Após (Fabric)
TokenLibrary.getPropertiesAsMap(serviceConnection) Remover — configurar diretamente a conta de armazenamento
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)

Para o acesso ADLS Gen2 baseado em OAuth, configure diretamente as credenciais do principal de serviço usando spark.conf.set() com as chaves específicas da conta de armazenamento (por exemplo, fs.azure.account.auth.type.<account>.dfs.core.windows.net), em vez de depender de fornecedores de tokens de serviço ligados.

Importante

Revise todos os cadernos para referências aos serviços vinculados antes da migração. No entanto, quaisquer chamadas spark.synapse.linkedService, TokenLibrary ou getSecretWithLS falham em tempo de execução no Fabric.

Migração da definição de tarefa Spark

As definições de trabalhos Spark (SJDs) são configurações de trabalhos em lote que referenciam um ficheiro executável principal (.py, .jar, ou .R), bibliotecas de referência opcionais, argumentos de linha de comandos e um contexto lakehouse. Embora o Spark Assistente de Migração gere automaticamente a migração de SJDs, diferenças importantes entre os SJDs Synapse e Fabric exigem atenção.

Principais diferenças entre os SJDs Synapse e Fabric

  • Contexto de Lakehouse é necessário. No Fabric, cada SJD deve ter pelo menos uma casa de lago associada. Este lakehouse serve como sistema de ficheiros predefinido para o ambiente de execução do Spark. Qualquer código que utilize caminhos relativos lê e escreve a partir do lakehouse padrão. No Synapse, os SJDs utilizam o armazenamento padrão do workspace (ADLS Gen2) como sistema de ficheiros predefinido.

  • Línguas suportadas. O Fabric suporta PySpark (Python), Spark (Scala/Java) e SparkR. .NET para Spark (C#/F#) não é suportado no Fabric. Tens de reescrever estas cargas de trabalho em Python ou Scala antes da migração.

  • Políticas de tentativas. Os SJDs do Fabric suportam políticas de repetição integradas, como o número máximo de tentativas e o intervalo entre tentativas. Esta funcionalidade é útil para trabalhos de Streaming Estruturado Spark que precisam de funcionar indefinidamente.

  • Vinculação ambiental. No Synapse, os SJDs ligam-se a um pool de Spark. No Fabric, os SJDs ligam-se a um Ambiente, que contém configuração de pool, bibliotecas e propriedades do Spark. O Assistente de Migração mapeia automaticamente as referências do pool Synapse para os Ambientes Fabric.

  • Agendamento. Fabric SJDs têm agendamento incorporado (Definições>Agendar) sem necessidade de um pipeline separado. No Synapse, o agendamento SJD requer um pipeline com uma atividade Spark Job. Se tiver fluxos de trabalho do Synapse que apenas ativam SJDs, considere usar o agendamento de SJD incorporado no Fabric em vez de migrar o fluxo de trabalho.

  • Importação/exportação. O Synapse suporta importação e exportação JSON baseadas em interface para SJDs. O Fabric não suporta importação ou exportação de interfaces. Use o Spark Assistente de Migração ou a API Fabric REST para criar ou atualizar SJDs programaticamente.

Refatorar código SJD

Os mesmos padrões de refatoração de código neste artigo aplicam-se aos ficheiros principais SJD. As alterações dividem-se em duas categorias.

Alterações ao código-fonte (dentro do ficheiro principal .py, .jar ou .R):

  • Substitui mssparkutils por notebookutils para operações de credencial e sistema de ficheiros.
  • Atualize os caminhos de ficheiros codificados fixamente no código para caminhos OneLake abfss:// ou caminhos de atalho, quando necessário. SJDs que utilizam apenas caminhos relativos em relação ao lakehouse padrão podem não necessitar de alterações.
  • Substituir as referências de serviço ligadas no código por Key Vault secrets ou Fabric Connections.

Note

As Ligações DMTS ainda não são suportadas nas definições de tarefas do Fabric Spark (suportadas apenas em cadernos). Se o teu código SJD usar DMTS, refatora para usar autenticação direta de endpoint.

Alterações na configuração SJD (nas definições do item Fabric SJD):

  • Verifique se os caminhos ADLS Gen2 referenciados pelos ficheiros de definição principal ainda estão acessíveis a partir do espaço de trabalho do Fabric. Se os ficheiros foram armazenados no armazenamento interno do espaço de trabalho Synapse, recarregue-os para o SJD do Fabric ou mova-os para uma localização ADLS Gen2 acessível.
  • Verifique se todos os ficheiros de referência (.py, .R, .jar) estão acessíveis após a migração. Volte a carregar quaisquer ficheiros que estivessem armazenados no espaço de trabalho do Synapse, armazenamento interno.
  • Se os argumentos da linha de comandos contiverem caminhos ou cadeias de ligação específicas do Synapse, atualize-os para equivalentes ao Fabric.

Migrar pools, ambientes e bibliotecas

Depois de os seus cadernos e definições de funções no Spark serem migrados, precisa de decidir a estratégia de pool e ambiente. Esta secção explica quando pode usar Fabric Starter Pools (em vez de migrar), quando criar ambientes personalizados e como identificar e resolver lacunas de compatibilidade de bibliotecas.

Migração do Spark Pool

Piscinas Iniciais de Fabricação

Os Fabric Starter Pools proporcionam arranque de sessões Spark em segundos — uma melhoria significativa em relação aos pools Synapse Spark, que requerem minutos para arranques a frio e iniciar clusters. Os Starter Pools estão prontos a ser usados a partir da plataforma e não requerem configuração.

Tip

Se o seu pool Synapse Spark não tem configurações personalizadas, nem bibliotecas personalizadas, nem requisitos específicos de tamanho de nó para além do Medium — não migre o pool. Em vez disso, deixe que os seus cadernos e definições de funções do Spark usem as definições padrão do Starter Pool do espaço de trabalho do Fabric. Esta abordagem dá-lhe os tempos de arranque mais rápidos e zero sobrecarga de gestão do pool. Só crie um Pool ou Ambiente Personalizado quando tiver uma necessidade específica.

Quando criar um pool ou ambiente personalizado

Crie um pool personalizado e/ou ambiente Fabric apenas quando a sua carga de trabalho exigir:

  • Um tamanho específico de nó (Pequeno, Grande, XLarge, XXLarge) diferente do Médio padrão.
  • Bibliotecas personalizadas (pacotes pip, pacotes conda, JARs, rodas) que não estão no runtime incorporado do Fabric.
  • Propriedades personalizadas do Spark (por exemplo, spark.sql.shuffle.partitions, spark.executor.memory) para além dos predefinidos.
  • Endereços Privados Geridos para o acesso a fontes de dados privadas (requer Custom Pools).
  • Uma versão específica de runtime do Spark diferente do padrão do workspace.

Configuração e migração de bibliotecas

Migre configurações e bibliotecas do Spark para Ambientes Fabric.

Para etapas detalhadas sobre a migração de bibliotecas para Ambientes Fabric, veja Migrar Bibliotecas Spark de Azure Synapse para Fabric.

  1. Exportar configurações do Spark. No Synapse Studio, vá para Gerir>Spark Pools> selecione o pool >Configurações + Bibliotecas> descarregar como .yml/.conf/.json.

  2. Importar para o Ambiente No Fabric, cria um artefacto de Ambiente. ** Vá para Spark Compute>Propriedades do Spark>Carregue o ficheiro Sparkproperties.yml exportado.

  3. Migrar bibliotecas. Para bibliotecas ao nível do pool, carregue pacotes (wheels, JARs, tars) para a secção de bibliotecas do Ambiente. Para pacotes PyPI/Conda, adicione-os à configuração da biblioteca pública do Ambiente.

Importante

As definições de biblioteca ao nível do espaço de trabalho no Fabric estão obsoletas. Migre todas as bibliotecas para artefactos de Ambiente. A migração remove permanentemente as configurações existentes ao nível do espaço de trabalho — descarregue todas as definições antes de ativar os Ambientes.

Compatibilidade da biblioteca: Synapse vs. Fabric

O Fabric Runtime 1.3 (Spark 3.5) vem com 223 bibliotecas Python, 183 Java/Scala e 135 R integradas. A maioria das bibliotecas Synapse está disponível no Fabric, mas existem lacunas que podem causar falhas em tempo de execução se não forem resolvidas antes da migração.

Para identificar quais as bibliotecas que os seus cadernos usam realmente, execute estas verificações antes de rever as tabelas de lacunas:

  • Python notebooks: Procure instruções import e from ... import em todos os ficheiros .py / .ipynb.
  • Java/Scala notebooks e SJDs: Procura instruções import e coordenadas Maven; procura pacotes como com.azure.cosmos.spark ou com.microsoft.kusto.spark.
  • Exportar lista completa de dependências: Executar pip freeze num caderno Synapse, comparar com o manifesto Fabric Runtime 1.3. Só as bibliotecas que aparecem tanto na sua pip freeze saída como nas tabelas de lacunas abaixo precisam de intervenção.
  • Bibliotecas personalizadas ao nível de Pool e ao nível de espaço de trabalho: No Synapse Studio, vá a Manage>Apache Spark Pools> selecione o pool >Packages para ver as bibliotecas personalizadas que precisam de ser recarregadas no ambiente Fabric.

Bibliotecas Python em falta no Fabric

Category Bibliotecas Ação
CUDA / GPU (9 libras) libcublas, libcufft, libcufile, libcurand, libcusolver, libcusparse, libnpp, libnvfatbin, libnvjitlink, libnvjpeg Não disponível — o Fabric não suporta pools de GPU. Refatorar as cargas de trabalho da GPU para usar alternativas baseadas em CPU ou manter o Synapse.
Clientes HTTP / API httpx, httpcore, h11, google-auth, jmespath Instalar via Ambiente: pip install httpx google-auth jmespath
ML / Interpretabilidade interpretar, interpretar-núcleo Instalar via Ambiente: pip install interpret
Serialização de dados Marshmallow, jsonpickle, frozendict, fixedint Instale via Ambiente se necessário: pip install marshmallow jsonpickle
Registo / Telemetria fluent-logger, humanfriendly, library-metadata-cooker, impulse-python-handler fluent-logger: instalar se for usado. Outros são internos ao Synapse — provavelmente não necessários.
Componentes internos de Jupyter jupyter-client, jupyter-core, jupyter-ui-poll, jupyterlab-widgets, ipython-pygments-lexers A Fabric gere internamente a infraestrutura Jupyter. Estas bibliotecas geralmente não são necessárias no código do utilizador.
Bibliotecas de sistema / C libgcc, libstdcxx, libgrpc, libabseil, libexpat, libnsl, libzlib Bibliotecas de sistema de baixo nível. Normalmente não são importados diretamente. Só instala se tiveres extensões C que dependam delas.
Arquivo / concorrência Filelock, FSSSPEC, Knack Instalar através do Ambiente caso seja utilizado: pip install filelock fsspec

Bibliotecas Java/Scala ausentes no Fabric

Biblioteca Versão Synapse Ação
Azure-cosmos-analytics-spark 2.2.5 Instale como um JAR personalizado no Ambiente Fabric se os seus trabalhos Spark usarem o conector de análise do Cosmos DB.
junit-jupiter-params 5.5.2 Biblioteca apenas para testes. Não é necessário em cadernos de produção.
junit-platform-commons 1.5.2 Biblioteca apenas para testes. Não é necessário em notebooks de produção.

Bibliotecas R

Só há uma diferença: o Synapse inclui o pacote lightgbm R (v4.6.0) que não está no Fabric. Instala via Ambiente se necessário. Fabric adiciona FabricTelemetry (v1.0.2), que é interno ao Fabric.

Diferenças notáveis nas versões

Existem 68 bibliotecas Python em ambas as plataformas, mas com versões diferentes. A maioria são diferenças menores de versão, mas 17 têm saltos de versão maiores que podem afetar o comportamento.

Biblioteca Versão Fabric Versão Synapse Impact
libxgboost 2.0.3 3.0.1 A API do XGBoost muda entre a v2 e a v3. Testar o código de treino/previsão do modelo.
frasco 2.2.5 3.0.3 A Flask 3.x tem alterações que falham. Se estiveres a servir APIs Flask a partir de notebooks, testa cuidadosamente.
LXML 4.9.3 5.3.0 Pequenas alterações na API. Testar workflows de parsing XML.
libprotobuf 3.20.3 4.25.3 O Protobuf 4.x tem alterações críticas para definições personalizadas no Protobuf.
markupsafe 2.1.3 3.0.2 O MarkupSafe 3.x deixa de suportar Python 3.7, mas a API é compatível.
libpq 12.17 17.4 Biblioteca cliente PostgreSQL. Salto de versão principal — testar as ligações da base de dados.
libgcc-ng / libstdcxx-ng 11.2.0 15.2.0 Duração do GCC. Pode afetar a compatibilidade das extensões C.

Note

O Synapse geralmente disponibiliza versões mais recentes de bibliotecas a nível de sistema (GCC, protobuf, libpq), enquanto o Fabric disponibiliza versões mais recentes de bibliotecas de dados/ML (mais pacotes Python no geral). Se precisares de uma versão específica, fixa-a na tua configuração do Fabric Environment.

Tip

Faça uma verificação rápida de compatibilidade: exporte a lista de bibliotecas do seu pool Synapse (pip freeze), compare com o manifesto do Fabric Runtime 1.3 e pré-instale quaisquer bibliotecas em falta no seu ambiente Fabric antes de executar os notebooks migrados. Para uma comparação linha a linha de cada biblioteca e versão incorporada entre os tempos de execução do Fabric e do Synapse Spark, consulte o repositório GitHub microsoft/synapse-spark-runtime.