mais lidos
Life at Nu
Conheça a sede do Nubank em Pinheiros, São Paulo/Brasil jan 11
Design
A nova aparência do Nubank: conheça nossa nova logo maio 17
Culture & Values
Como os valores e a cultura da Nu moldam os produtos que criamos ago 7
Carreiras
Reunimos grandes mentes de diversas origens que permitem a discussão e o debate e melhoram a resolução de problemas.
Saiba mais sobre nossas carreiras



Revisado por Felipe Yukio
Databricks e Spark UI são ferramentas poderosas para lidar com operações com muitos dados. Assim como qualquer sistema robusto, otimizar o desempenho é essencial para aproveitar os recursos ao máximo. Este guia detalha as métricas de desempenho no Databricks usando o Spark UI.
Desde a preparação até a identificação de desafios e o aperfeiçoamento de soluções, ele oferece uma perspectiva abrangente sobre o aproveitamento máximo de operações de dados. Com uma mistura de ideias técnicas e conselhos práticos, os leitores aprenderão a usar as capacidades de diagnóstico do Spark UI, garantindo que as operações de dados sejam eficientes, eficazes e esclarecidas. Continue lendo!
O valor do Spark UI
O Spark UI é uma ferramenta instrumental de diagnóstico para quem trabalha com Databricks e Apache Spark. Ele oferece uma visão dos funcionamentos internos das operações de dados. Ao lidar com grandes conjuntos de dados, costuma ser difícil determinar se melhorias estão sendo realizadas. O Spark UI oferece clareza apresentando dados de operação de uma maneira compreensível.
Conheça nossas oportunidades
Preparação para análise e resolução de problemas de amostra
Antes de começar a análise, garantir um ambiente condutivo é fundamental. Isso envolve evitar caching de dados, que podem afetar métricas de processamento de dados em tempo real. É possível desabilitar o cache no Databricks com comandos como definir “spark.databricks.io.cache.enabled” como falso.
Liberar o cache no catálogo do Spark garante um ambiente sem cache. Para entusiastas de SQL no Databricks, é possível obter o mesmo efeito com o comando de liberar cache do SQL. Caso queira evitar erros, é bom considerar reiniciar o cluster para garantir uma configuração sem cache.
Explorando as métricas
Ao executar consultas no Spark, as métricas do Spark UI se tornam centrais. Uma observação inicial é direcionada à visualização de “trabalho”, oferecendo uma perspectiva mais ampla. Toda operação de dados no Spark ativa “trabalhos” que têm múltiplas “etapas” compostas de diversas “tarefas”. Métricas como quantidade de tarefas por etapa o tempo necessário para cada etapa são apresentadas aqui.
Uma exploração mais detalhada leva à visualização de “etapa”, revelando detalhes mais específicos, como distribuições de partição. Métricas valiosas como horários de coleta de lixo e distribuições de tamanho de entrada são apresentadas, ajudando no diagnóstico de problemas como assimetria de dados.
O Databricks opera em um ambiente em cluster, e as métricas agregadas pelo executor destacam o desempenho de cada executor nesse cenário. Na visualização de “tarefa”, há ainda mais granularidade, esclarecendo as métricas de cada tarefa e garantindo uma análise de desempenho abrangente.
Perspectivas sobre Operações Assimétricas
As operações são consideradas assimétricas quando há uma partição que processa muito mais dados do que as outras, fazendo com que o Spark não seja capaz de executar as transformações em paralelo. Isso acontece porque o Spark envia todos os dados com o mesmo código para uma única partição, e se há um valor de código mais comum do que outros, a partição fica assimétrica.
No Spark UI, isso pode ser identificado quando uma “tarefa” leva muito mais tempo do que a média de todas as outras tarefas de um trabalho. E uma transformação assimétrica pode ocorrer em uma função join ou window. Para evitar isso, verifique se os dados assimétricos podem ser filtrados antes de realizar qualquer uma dessas transformações.
Desafios com Shuffle e Spill
Shuffle é uma técnica cara usada pelo Spark para redistribuir os dados em diferentes partições, o que é desencadeado por transformações comuns como: join e groupBy.
A quantidade de partições usadas para o Shuffle dos dados pode ser aumentada ou reduzida por spark.sql.shuffle.partitions. Se estiver lidando com quantidades menores de dados, você deve reduzir a quantidade de partições de Shuffle para evitar a execução simultânea de diversas tarefas com um volume pequeno de dados. Por outro lado, uma grande quantidade de dados sendo executada em poucas partições faz as tarefas demorarem demais e pode causar erros de memória.
Acertar o número de partições de Shuffle é complicado, pois geralmente são necessários testes com diferentes valores para identificar a melhor quantidade. No entanto, costuma valer o esforço, pois é a fonte mais comum de erros de desempenho em trabalhos do Spark.
Como último recurso para evitar erros de memória, o Spark pode vazar dados da memória para o disco, que depois precisam ser movidos de volta aumentando as taxas de leitura e escrita do disco, além do tempo de execução da tarefa. Essa métrica também pode ser identificada pelo Spark UI. Aumentar o número de partições de Shuffle é uma das maneiras de reduzir o vazamento de dados.
Conclusão
Esse aprofundamento no Databricks e no Spark UI ressaltou a importância da preparação, das complexidades das métricas e das nuances dos processos de refinamento. Ao aproveitar as capacidades de diagnóstico do Spark UI, é possível navegar pelo vasto cenário de operações de dados com clareza e confiança.
Seja para resolver problemas específicos, testar métodos diferentes ou aperfeiçoar soluções, uma abordagem informada pode melhorar muito o desempenho. Conforme o mundo dos dados continua crescendo, ferramentas como o Spark UI se tornam indispensáveis, garantindo que toda operação de dados não seja só um processo, mas uma oportunidade para otimização.
Conheça nossas oportunidades