Pular para o conteúdo principal

Adaptar seu código Apache Spark existente para a Databricks

Este artigo descreve as alterações necessárias para adaptar as cargas de trabalho existentes em Apache Spark para execução em Databricks. Independentemente de o senhor estar migrando para o Databricks a partir de um clustering local, de uma infraestrutura personalizada baseada em nuvem ou de outra oferta corporativa do Apache Spark, a maioria das cargas de trabalho exige apenas algumas alterações para entrar em produção. Databricks estende, simplifica e melhora o desempenho do Apache Spark, introduzindo otimizações personalizadas, configurando e implantando a infraestrutura e mantendo as dependências em Databricks Runtime.

important

Quando o senhor atualiza as versões do Apache Spark, pode haver mudanças significativas na sintaxe. Consulte Databricks Runtime notas sobre versões e compatibilidade e o guia de migração Spark.

Altere parquet para delta

A Databricks recomenda o uso do Delta Lake em vez de Parquet ou ORC ao gravar dados. Databricks otimizou muitos recursos para aumentar a eficiência ao interagir com tabelas respaldadas pelo site Delta Lake, e a atualização de dados e códigos do site Parquet para o site Delta Lake requer apenas algumas etapas. Consulte Migrar um data lake Parquet para o Delta Lake.

Como o site Delta Lake oferece garantias de transações ACID, o senhor poderá simplificar as cargas de trabalho para remover soluções alternativas voltadas para a criação de pseudo-transacionalidade nas operações Apache Spark. Os exemplos incluem:

  • Criar uma estrutura de diretório ou estratégia de particionamento que permita 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 à forma como novos dados são descobertos.
  • Usando o site MSCK repair para registrar arquivos gravados em uma tabela no metastore.
  • Usando alter table add partition para adicionar partições manualmente a uma tabela.

Consulte Quando particionar tabelas em Databricks.

nota

O senhor pode executar cargas de trabalho sem atualizar os formatos de dados usados, mas muitos dos maiores ganhos de desempenho em Databricks estão diretamente ligados a Delta Lake.

Recompilar o código Apache Spark com a biblioteca compatível com Databricks Runtime

Cada versão do Databricks Runtime vem pré-configurada com muitas das bibliotecas necessárias em Apache aplicações Spark. O senhor pode instalar uma biblioteca adicional no seu compute conforme necessário, mas, sempre que possível, o Databricks recomenda o uso de versões da biblioteca incluídas no Databricks Runtime que foram testadas quanto à compatibilidade. Cada versão do site Databricks Runtime inclui uma lista de todas as bibliotecas instaladas. Consulte Databricks Runtime notas sobre as versões e a compatibilidade.

Remover SparkSession creation comando

Muitas cargas de trabalho legadas do Apache Spark declaram explicitamente um novo SparkSession para cada trabalho. Databricks cria automaticamente um SparkContext para cada compute clustering e cria um SparkSession isolado para cada Notebook ou Job executado no clustering. O senhor pode manter a capacidade de compilar e testar o código localmente e depois implantá-lo em Databricks atualizando esses comandos para usar SparkSession.builder().getOrCreate().

Remover o script de terminal comando

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

Databricks também encerra e limpa automaticamente as cargas de trabalho de transmissão estruturada no término da execução, para que o senhor possa remover awaitTermination() e comandos semelhantes dos aplicativos de transmissão estruturada.

Confie em Databricks para configurar seu clustering

Databricks define todas as configurações do driver e do executor em seu clustering compute automaticamente para maximizar a resiliência e o uso de recursos. O fornecimento de configurações personalizadas para o executor ou para o site JVM pode resultar em redução do desempenho. A Databricks recomenda definir apenas as configurações do Spark necessárias para controlar o manuseio de tipos ou funções, de modo que a lógica permaneça consistente.

execução de suas cargas de trabalho

Agora que você removeu padrões, comandos e configurações que podem interferir na execução do Databricks, você 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 das cargas de trabalho do Apache Spark ainda possam ser aproveitadas no Databricks, com mais frequência você pode ver maiores ganhos com a atualização de passos para usar novos recursos no Apache Spark, Delta Lake ou Databricks personalizados produtos.