Pular para conteúdo

O Lazy Evaluation?

Lazy Evaluation (ou "Avaliação Preguiçosa") é um conceito em programação e computação onde a avaliação de uma expressão é adiada até que o valor da expressão seja efetivamente necessário. Isso pode levar a otimizações significativas de desempenho, reduzindo a quantidade de cálculos realizados e, em alguns casos, evitando completamente certas avaliações.

Quando usamos as funções select, filter ou groupBy no Spark, o driver armazena as informações dessas transformações. Estas são categorizadas como 'narrow' e 'wide' transformations no Spark (abordaremos esse tema mais adiante). O resultado destas transformações só será retornado ao executarmos ações, como count, collect ou max, que demandam uma resposta imediata para o usuário.
E quais os benefícios Lazy Evaluation (avaliação preguiçosa)?

- Melhora a eficiência: O otimizador Catalyst do Spark agrupará as operações, reduzindo o número de repasses de dados e melhorando o desempenho.

- Melhor Legibilidade: Como você sabe que o Spark agrupará as operações e otimizará o código nos bastidores, você pode organizar seu programa usando operações menores que melhorarão a legibilidade e a manutenção do código.

- Gerenciamento de memória: Se as transformações do Spark fossem ávidas, você teria que armazenar todos os Dataframes/RDDs intermediários em algum lugar ou, no mínimo, gerenciar a memória se tornaria outra preocupação sua.

Referências

Explain Spark Lazy Evaluation in Detail
Lazy Evaluation in Apache Spark
3 Reasons Why Spark's Lazy Evaluation is Useful