Runtimes do Apache Spark no Fabric

O Microsoft Fabric Runtime é uma plataforma integrada ao Azure baseada no Apache Spark que permite a execução e o gerenciamento de experiências de engenharia de dados e ciência de dados. Ele combina os principais componentes de fontes internas e de software livre, fornecendo aos clientes uma solução abrangente. Para simplificar, consulte o Microsoft Fabric Runtime alimentado pelo Apache Spark como Fabric Runtime.

Principais componentes do Fabric Runtime:

  • Apache Spark – Uma poderosa biblioteca de computação distribuída de código aberto que habilita tarefas de processamento e análise de dados em larga escala. O Apache Spark fornece uma plataforma versátil e de alto desempenho para experiências de engenharia de dados e ciência de dados.

  • Delta Lake – uma camada de armazenamento de software livre que traz transações ACID e outros recursos de confiabilidade de dados para o Apache Spark. Integrado no Microsoft Fabric Runtime, o Delta Lake aprimora os recursos de processamento de dados e garante a consistência dos dados em várias operações simultâneas.

  • O Mecanismo de Execução Nativa - um avanço transformador para cargas de trabalho do Apache Spark, oferecendo ganhos significativos de desempenho ao executar diretamente consultas do Spark na infraestrutura de lakehouse. Integrado de forma fluida, não requer alterações de código e evita o bloqueio do fornecedor. Ele suporta formatos Parquet e Delta em APIs Apache Spark em Runtime 1.3 (Spark 3.5) e Runtime 2.0 (Spark 4.1).

    Os operadores com suporte são transferidos do Spark baseado em JVM para um caminho de execução vetorizado em C++ por meio do Apache Gluten e do Velox, fornecendo processamento columnar acelerado por SIMD com suporte nativo para os formatos Parquet e Delta. Quando não há suporte para um operador, a execução volta automaticamente para o Spark baseado em JVM. Em testes comparativos representativos (TPC-DS no fator de escala 1000 usando o Delta), o mecanismo obteve um desempenho até seis vezes mais rápido em comparação com o Spark de software livre, traduzindo em uma economia de custo de computação de aproximadamente 83% em um cluster Fabric de tamanho fixo.

    O caminho nativo preserva as otimizações de consulta do Fabric Spark, incluindo execução de consulta adaptável, regravações baseadas em custo, poda de coluna e pushdown de predicado. Você pode alternar a execução nativa por aplicativo usando a spark.native.enabled configuração. Durante a execução da célula do notebook, o Assistente do Spark do Fabric exibe alertas em tempo real quando a execução volta ao Spark baseado em JVM, ajudando você a diagnosticar quando a transferência nativa não é aplicada.

  • Pacotes de nível padrão para Java/Scala, Python e R – Pacotes que dão suporte a diversos ambientes e linguagens de programação. Esses pacotes são instalados e configurados automaticamente, para que os desenvolvedores possam aplicar suas linguagens de programação preferidas para tarefas de processamento de dados.

  • O Microsoft Fabric Runtime é criado com base em um sistema operacional de software livre robusto, garantindo compatibilidade com várias configurações de hardware e requisitos do sistema.

Na tabela a seguir, você encontra uma comparação abrangente dos principais componentes, incluindo versões do Apache Spark, sistemas operacionais suportados, Java, Scala, Python, Delta Lake e R, para runtimes baseados em Apache Spark dentro da plataforma Microsoft Fabric.

Dica

Sempre use a versão de runtime mais recente e geralmente disponível (GA) para sua carga de trabalho de produção, que atualmente é o Runtime 1.3.

Componente Runtime 1.3 Runtime 2.0
Fase de lançamento GA Visualização Pública
Versão do Apache Spark 3.5.5 4.1
Sistema operacional Mariner 2.0 Mariner 3.0
Versão do Java 11 21
Versão do Scala 2.12.17 2.13.16
Versão do Python 3.11 3.13
Versão do Delta Lake 3.2 4.2

Visite o Runtime 1.3 ou o Runtime 2.0 para explorar detalhes, novos recursos, melhorias e cenários de migração para a versão de runtime específica.

Otimizações do Fabric

No Microsoft Fabric, tanto o mecanismo Spark quanto as implementações do Delta Lake incorporam otimizações e recursos específicos da plataforma. Esses recursos utilizam integrações nativas dentro da plataforma. Você pode desativar todos esses recursos para alcançar a funcionalidade padrão do Spark e Delta Lake. Os Runtimes do Fabric para Apache Spark abrangem:

  • A versão de software livre completa do Apache Spark.
  • Uma coleção de quase 100 aprimoramentos de desempenho de consulta embutidos e exclusivos. Esses aprimoramentos incluem recursos como cache de partição (habilitando o cache de partição do FileSystem para reduzir chamadas ao metastore) e Cross Join para Projeção da Subconsulta Escalar.
  • Cache inteligente integrado.

Dentro do Fabric Runtime para Apache Spark e Delta Lake, as capacidades dos escritores nativos cumprem dois propósitos principais:

  • Eles oferecem desempenho diferenciado para cargas de trabalho de gravação, otimizando o processo de gravação.
  • Eles adotam a otimização padrão V-Order para arquivos Delta Parquet. A otimização de V-Order do Delta Lake é crucial para fornecer desempenho de leitura superior em todos os mecanismos do Fabric. Para obter uma compreensão mais profunda de como ele opera e como gerenciá-lo, veja otimização de tabelas Delta Lake e V-Order.

Suporte a vários runtimes

O Fabric suporta múltiplos runtimes, então você pode alternar entre eles e reduzir o risco de problemas de compatibilidade ou interrupções.

Note

Um runtime do Spark inclui uma versão específica em Python como parte de seu conjunto de componentes. Por exemplo, o Runtime 1.3 inclui Python 3.11. Esta versão em Python é separada do kernel do notebook Python que você seleciona para notebooks puros em Python. Para o ciclo de vida do kernel do notebook Python, veja o tempo de execução do notebook Python e o ciclo de vida do kernel no Fabric.

Por padrão, todos os novos workspaces usam a versão mais recente do runtime de GA, que atualmente é o Runtime 1.3.

Para alterar a versão do runtime no nível do workspace, acesse Configurações do Workspace>Engenharia/Ciência de Dados>Configurações do Spark. Na guia Ambiente, selecione a versão do runtime desejada nas opções disponíveis. Selecione Salvar para confirmar sua seleção.

Captura de tela mostrando onde selecionar a versão do runtime para as configurações do Workspace.

Depois de fazer essa alteração, todos os itens criados pelo sistema no espaço de trabalho, incluindo Lakehouses, SJDs e Notebooks, passarão a usar a versão de runtime selecionada no nível do espaço de trabalho a partir da próxima sessão do Spark. Se você estiver usando atualmente um notebook com uma sessão existente para um job ou qualquer atividade relacionada ao lakehouse, essa sessão do Spark continuará inalterada. No entanto, a partir da próxima sessão ou tarefa, a versão de runtime selecionada se aplica.

Para alterar o tempo de execução no Environment nível do item, crie um novo item do Ambiente ou abra um existente. No menu suspenso Runtime, selecione a versão de runtime desejada entre as opções disponíveis, selecione Save e, em seguida, Publish suas alterações. Em seguida, você pode usar este Environment item com o seu Notebook ou Spark Job Definition.

Captura de tela mostrando onde selecionar a versão do runtime para o item Ambiente.

Consequências das alterações de runtime nas Configurações do Spark

O sistema migra todas as configurações do Spark. No entanto, se o sistema identificar que uma configuração do Spark não é compatível com o Runtime B, ele mostra uma mensagem de aviso e não implementa essa configuração.

Alteração do runtime de configurações do Spark.

Consequências das alterações de runtime no gerenciamento de bibliotecas

O sistema de gerenciamento de bibliotecas migra todas as bibliotecas do Runtime A para o Runtime B, incluindo tanto os tempos públicos quanto os customizados. Se as versões em Python e R permanecerem as mesmas, as bibliotecas funcionam corretamente. No entanto, para JARs, há uma chance significativa de que eles não funcionem devido a mudanças nas dependências e outros fatores, como alterações em Scala, Java, Spark e no sistema operacional.

Você é responsável por atualizar ou substituir quaisquer bibliotecas que não funcionem com o Runtime B. Se houver um conflito, o que significa que o Runtime B inclui uma biblioteca originalmente definida no Runtime A, o sistema de gerenciamento de bibliotecas tenta criar a dependência necessária para o Runtime B com base nas suas configurações. No entanto, o processo de construção falhará se ocorrer um conflito. No registro de erros, você pode ver quais bibliotecas causam conflitos e fazer ajustes em suas versões ou especificações.

Alteração do runtime de gerenciamento de biblioteca.

Atualizar o protocolo Delta Lake

Os recursos do Delta Lake são sempre compatíveis com versões anteriores, garantindo que as tabelas criadas em uma versão inferior do Delta Lake possam interagir perfeitamente com versões superiores. No entanto, quando você ativa certos recursos (por exemplo, usando o delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) método), pode comprometer a compatibilidade futura com versões inferiores do Delta Lake. Nesses casos, é necessário modificar cargas de trabalho que referenciam as tabelas atualizadas para alinhar com uma versão Delta Lake que mantenha compatibilidade.

Cada tabela Delta está associada a uma especificação de protocolo, que define as funcionalidades que ela suporta. Os aplicativos que interagem com a tabela, para leitura ou gravação, dependem dessa especificação de protocolo para determinar se são compatíveis com o conjunto de recursos da tabela. Se uma aplicação não tiver capacidade para lidar com uma funcionalidade listada como suportada no protocolo da tabela, ela não pode ler ou escrever nessa tabela.

A especificação do protocolo é dividida em dois componentes distintos: o protocolo de "leitura" e o protocolo de "gravação". Para mais informações, veja Como a Delta Lake gerencia a compatibilidade de recursos?

GIF mostrando o aviso imediato quando o método upgradeTableProtocol é usado.

Você pode executar o comando delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) no ambiente PySpark, e no SQL e Scala do Spark. Esse comando inicia uma atualização na tabela Delta.

Ao realizar essa atualização, recebe um aviso de que atualizar a versão do protocolo Delta é um processo irreversível. Esse processo significa que, uma vez que você executa a atualização, não pode mais desfazê-la.

As atualizações de versão do protocolo podem afetar potencialmente a compatibilidade de leitores de tabela, gravadores ou ambos existentes do Delta Lake. Portanto, prossiga com cautela e atualize a versão do protocolo apenas quando necessário, como ao adotar novos recursos no Delta Lake.

Importante

Para saber mais sobre quais versões e recursos de protocolo são compatíveis em todas as experiências do Microsoft Fabric, veja Interoperabilidade do formato de tabela Delta Lake.

Captura de tela mostrando o aviso ao atualizar o protocolo delta lake.

Além disso, verifique se todas as cargas de trabalho e processos de produção atuais e futuros são compatíveis com as tabelas Delta Lake usando a nova versão do protocolo para garantir uma transição fluida e evitar possíveis interrupções.