Adapte seu código Apache Spark existente para Databricks

Este artigo descreve as alterações necessárias para adaptar as cargas de trabalho existentes do Apache Spark para execução no Databricks. Esteja você migrando para o Databricks de clusters locais, infraestrutura personalizada baseada cloudou outra oferta corporativa do Apache Spark, a maioria das cargas de trabalho requer apenas algumas alterações para entrar em produção. O Databricks estende, simplifica e melhora o desempenho do Apache Spark introduzindo otimizações personalizadas, configurando e aprimorando a infraestrutura e mantendo dependências no Databricks Runtime.

Importante

Ao atualizar versões do Apache Spark, pode haver alterações significativas na sintaxe. Consulte as notas do Databricks Runtime sobre versões de versão e compatibilidade e o guia de migração do Spark.

Alterar parquet para delta

Databricks recomenda usar Delta Lake em vez de Parquet ou ORC ao gravar dados. Databricks otimizou muitos recursos para eficiência ao interagir com tabelas apoiadas por Delta Lake, e atualizar dados e código do Parquet para Delta Lake leva apenas alguns passos. Consulte Migrar um data lake Parquet para Delta Lake.

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

  • Construir 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 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 Databricks.

Observação

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

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

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

Remover os comandos de criação SparkSession

Muitas cargas de trabalho Apache Spark legadas declaram explicitamente uma nova SparkSession para cada Job. Databricks cria automaticamente um SparkContext para cada clusters compute e cria uma SparkSession isolada para cada Notebook ou Job executado nos clusters. Você pode manter a capacidade de compilar e testar o código localmente e, em seguida, aprimorar o Databricks atualizando esses comandos para usar SparkSession.builder().getOrCreate().

Remover comandos de script de terminal

O Apache Spark exige que os programas declarem explicitamente que estão completos usando comandos como sys.exit() ou sc.stop(). O Databricks encerra e limpa automaticamente Job conforme ele é concluído, portanto, esses comandos não são necessários e devem ser removidos.

O Databricks também encerra e limpa automaticamente cargas de trabalho estruturadas de transmissão no encerramento da execução, para que você possa remover awaitTermination() e comandos semelhantes de aplicativos estruturados de transmissão.

Confie no Databricks para configurar seus clusters

Databricks define todas as configurações para o driver e executores em seus clusters compute automaticamente para maximizar a resiliência e o uso de recursos. Fornecer configurações customizadas para os executores ou JVM pode resultar em desempenho reduzido. Databricks recomenda apenas definir as configurações do Spark necessárias para controlar o tratamento de tipo ou funções para 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.