Partilhar via


Adapte seu código Apache Spark existente para o Azure Databricks

Este artigo descreve as alterações necessárias para adaptar as cargas de trabalho existentes do Apache Spark para serem executadas no Azure Databricks. Quer esteja a mudar para o Azure Databricks a partir de um cluster local, de uma infraestrutura personalizada baseada na nuvem ou de outra oferta empresarial do Apache Spark, a maioria das cargas de trabalho requer apenas algumas alterações para entrar em produção. O Azure Databricks estende, simplifica e melhora o desempenho do Apache Spark introduzindo otimizações personalizadas, configurando e implantando infraestrutura e mantendo dependências no Databricks Runtime.

Importante

Quando você atualiza versões do Apache Spark, pode haver alterações significativas na sintaxe. Consulte Notas de versão, versões e compatibilidade do Databricks Runtime e o guia de migração do Spark.

Alterar parquet para delta

A Databricks recomenda o uso do Delta Lake em vez de Parquet ou ORC ao gravar dados. O Azure Databricks otimizou muitos recursos para eficiência ao interagir com tabelas apoiadas pelo Delta Lake, e a atualização de dados e do formulário de código Parquet para Delta Lake leva apenas algumas etapas. Consulte Migrar um data lake do Parquet para o Delta Lake.

Como o Delta Lake fornece garantias de transação ACID, você pode simplificar cargas de trabalho para remover soluções alternativas voltadas para a criação de pseudotransacionalidade em operações do Apache Spark. Exemplos incluem:

  • Construindo uma estrutura de diretórios ou estratégia de particionamento que permite que todos os arquivos de uma determinada operação sejam descobertos simultaneamente como parte de uma partição.
  • Configurar ou confiar no metastore para adicionar transacionalidade para como novos dados são descobertos.
  • Usando MSCK repair para registrar arquivos gravados em uma tabela para o metastore.
  • Usando alter table add partition para adicionar partições manualmente a uma tabela.

Consulte Quando particionar tabelas no Azure Databricks.

Nota

Você pode executar cargas de trabalho sem atualizar os formatos de dados usados, mas muitos dos maiores ganhos de desempenho no Azure Databricks estão diretamente ligados ao Delta Lake.

Recompile o código do Apache Spark com bibliotecas compatíveis com o Databricks Runtime

Cada versão do Databricks Runtime vem pré-configurada com muitas das bibliotecas necessárias nos aplicativos Apache Spark. Você pode instalar bibliotecas adicionais em sua computação conforme necessário, mas sempre que possível, o Databricks recomenda o uso de versões de biblioteca empacotadas no Databricks Runtime que são testadas quanto à compatibilidade. Cada versão do Databricks Runtime inclui uma lista de todas as bibliotecas instaladas. Consulte Notas de versão, versões e compatibilidade do Databricks Runtime.

Remover comandos de criação do SparkSession

Muitas cargas de trabalho herdadas do Apache Spark declaram explicitamente uma nova SparkSession para cada tarefa. O Azure Databricks cria automaticamente um SparkContext para cada cluster de computação e cria uma SparkSession isolada para cada bloco de anotações ou trabalho executado no cluster. Você pode manter a capacidade de compilar e testar o código localmente e, em seguida, implantar no Azure Databricks atualizando esses comandos para usar SparkSession.builder().getOrCreate()o .

Remover comandos de script de terminal

O Apache Spark requer que os programas declarem explicitamente que estão completos usando comandos como sys.exit() ou sc.stop(). O Azure Databricks encerra e limpa automaticamente os trabalhos à medida que eles atingem a conclusão, portanto, esses comandos não são necessários e devem ser removidos.

O Azure Databricks também encerra e limpa automaticamente as cargas de trabalho do Streaming Estruturado no término da execução, para que você possa remover awaitTermination() comandos semelhantes de aplicativos de Streaming Estruturado.

Confie no Azure Databricks para configurar seu cluster

O Azure Databricks define todas as configurações para o driver e os executores em seu cluster de computação automaticamente para maximizar a resiliência e o uso de recursos. Fornecer configurações personalizadas para os executores ou JVM pode resultar em desempenho reduzido. O Databricks recomenda definir apenas as configurações do Spark que são necessárias para controlar a manipulação de tipos ou funções para que a lógica permaneça consistente.

Execute suas cargas de trabalho

Agora que você removeu padrões, comandos e configurações que podem interferir na execução do Azure Databricks, pode executar suas cargas de trabalho em um ambiente de teste e comparar o desempenho e os resultados com sua infraestrutura herdada. Embora muitas das habilidades que sua equipe possa ter desenvolvido para solucionar problemas e melhorar o desempenho de cargas de trabalho do Apache Spark ainda possam ser aproveitadas no Azure Databricks, com mais frequência você pode ver maiores ganhos com a atualização de etapas para usar novos recursos no Apache Spark, Delta Lake ou produtos personalizados do Azure Databricks.