O Que É o Apache Spark? O Motor de Dados Distribuído Explicado
O Apache Spark é um motor open-source para processar grandes volumes de dados em paralelo num cluster, usando computação em memória para ganhar velocidade.
O Apache Spark é o motor dominante para processamento de big data. Quando um dataset é grande demais para uma única máquina, o Spark distribui o trabalho por um cluster, mantém resultados intermediários em memória e oferece APIs amigáveis em Python, Scala, SQL e mais.
O que é o Spark
O Spark é um motor de computação distribuída. Ele divide um dataset grande em partições, processa-as em paralelo pelos nós worker e combina os resultados. Seu modelo em memória o torna muito mais rápido que frameworks mais antigos baseados em disco em muitos workloads, especialmente os iterativos.
Como funciona
Uma aplicação Spark é coordenada por um driver que constrói um DAG de transformações e entrega tasks aos executors que rodam no cluster. O Spark é lazy: transformações constroem um plano, e apenas uma action (como gravar a saída) dispara a execução, permitindo ao Spark otimizar o DAG inteiro.
Para que as pessoas usam
O Spark alimenta ETL em larga escala, analytics SQL (Spark SQL), streaming (Structured Streaming) e ML (MLlib). Ofertas gerenciadas como Databricks e EMR rodam clusters Spark para que as equipes não precisem operar a infraestrutura por conta própria.
Spark e CI
Jobs do Spark são código, então o CI os executa contra uma pequena sessão Spark local com dados de amostra para pegar erros de lógica antes de eles chegarem a um cluster real e caro.
steps:
- run: pip install pyspark
- run: pytest tests/spark # uses a local[*] SparkSessionNota Latchkey
Uma sessão Spark local no CI pode usar bastante CPU e memória. No Latchkey você pode rodar esses testes em runners maiores para que uma sessão local[*] tenha espaço, fazer cache das pesadas dependências do PySpark e da JVM entre execuções, e usar auto-retry para buscas transitórias de dados de amostra.
Principais conclusões
- O Apache Spark processa grandes datasets em paralelo num cluster usando computação em memória.
- Um driver constrói um DAG de transformações lazy que os executors rodam quando uma action as dispara.
- O CI testa jobs do Spark contra uma pequena sessão local com dados de amostra antes de eles chegarem a um cluster real.