#5 Apache Spark: Processamento Distribuído de Dados na Prática
- JP

- 25 de set.
- 5 min de leitura
Série: Trilha prática para se tornar Engenheiro de Dados – Capítulo 5
Pré-requisitos importantes antes de usar o Apache Spark
Antes de mergulhar no Spark, garanta que você tem:
Ter acompanhado os Capítulos 1 a 4 (ETL básico, Python + SQL, Data Warehouse e Airflow).
Prepare seu ambiente:
Antes de colocar a mão na massa, é fundamental preparar o ambiente. Sem isso, o Spark não funciona corretamente.
⚠️ Importante: todos os comandos a seguir devem ser executados no terminal (não dentro do Python).
Antes de colocar a mão na massa, é fundamental preparar o ambiente. Sem isso, o Spark não funciona corretamente.
1. Java JDK 17 (ou 11/21 suportado pelo Spark 4.x)
O Spark roda sobre a JVM, portanto precisa de um JDK, não apenas de um JRE.
Linux (Ubuntu/Debian)
Verifique se já está instalado:
java -versionSe não estiver, instale:
sudo apt update
sudo apt install -y openjdk-17-jdkmacOS
No macOS, o caminho mais simples é via Homebrew:
brew install openjdk@17Depois, adicione ao seu perfil (~/.zshrc ou ~/.bashrc):
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATHWindows
Baixe e instale o JDK 17 diretamente do site oficial da Oracle:👉 Download oficial – Oracle JDK 17
Durante a instalação, marque a opção “Set JAVA_HOME variable” (se disponível).
Caso precise configurar manualmente:
Vá em Painel de Controle > Sistema > Configurações Avançadas > Variáveis de Ambiente.
Crie uma variável de sistema chamada JAVA_HOME apontando para o diretório do JDK, exemplo:
C:\Program Files\Java\jdk-17Edite a variável Path e adicione:
%JAVA_HOME%\binTeste no PowerShell:
java -version
echo $env:JAVA_HOMESaída esperada:
java version "17.x"
Java(TM) SE Runtime Environment ...
Java HotSpot(TM) 64-Bit Server VM ...2. Configurar a variável JAVA_HOME
Linux (Ubuntu/Debian)
Descubra o caminho do Java 17:
update-alternatives --config javaConfigure o JAVA_HOME (sessão atual):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATHPara deixar permanente, adicione as linhas abaixo aos arquivos ~/.bashrc ou ~/.zshrc:
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrcmacOS
Descubra o caminho do Java 17, execute no terminal o comando abaixo:
/usr/libexec/java_home -VConfigure (sessão atual):
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATHPara deixar permanente, adicione ao ~/.zshrc ou ~/.bashrc.
Windows
Abra Painel de Controle → Sistema → Configurações Avançadas → Variáveis de Ambiente.
Crie a variável:
Nome: JAVA_HOME
Valor: C:\Program Files\Java\jdk-17
Edite o Path e adicione:
%JAVA_HOME%\binTeste no PowerShell (sessão atual):
$env:JAVA_HOME="C:\Program Files\Java\jdk-17"
$env:Path="$env:JAVA_HOME\bin;$env:Path"
java -version
echo $env:JAVA_HOME3. Criar o ambiente virtual Python
No diretório do projeto, acesse o terminal e execute os comandos abaixo:
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows PowerShell4. Instalar o PySpark e dependências
Com o venv ativo, execute os comando abaixo para instalar o pyspark, pandas e a biblioteca para requisições:
pip install --upgrade pip
pip install pyspark pandas requestsAgora é só validar:
python -c "import pyspark; print(pyspark.__version__)"5. Evitar conflitos com instalações antigas
Se houver Spark instalado no sistema (ex.: /opt/spark), desative:
unset SPARK_HOME
unset CLASSPATHNão se preocupe: vamos usar apenas exemplos simples, que rodam localmente.
Introdução
Chegou a hora de mergulhar em uma das ferramentas mais poderosas do universo de Engenharia de Dados: o Apache Spark.Se até agora trabalhamos com Python, SQL e pequenos pipelines, o Spark é a peça que te permite escalar o processamento para lidar com grandes volumes de dados de forma rápida e distribuída.
Neste capítulo, você vai entender como o Spark funciona, preparar seu ambiente e construir um pipeline ETL (Extract, Transform, Load) usando dados reais de uma API.
Como funciona o cluster do Spark
Mesmo quando você roda o Spark na sua máquina local, ele simula a arquitetura de um cluster. Esse modelo é o que permite o Spark escalar para milhares de máquinas em produção.

Driver Program
É o cérebro do Spark.
Onde seu código Python (via PySpark) roda.
Responsável por criar a SparkSession, planejar a execução, dividir as tarefas em etapas (chamadas stages) e enviar para o Cluster Manager.
Também coleta os resultados no final.
👉 Exemplo prático: quando você chama df.show(), o driver envia instruções ao cluster e recebe de volta os dados formatados para exibição.
Cluster Manager
É o orquestrador que distribui recursos (CPU, memória) entre os programas Spark.
Pode ser de diferentes tipos:
Standalone: nativo do Spark, simples de usar.
YARN: usado no Hadoop.
Kubernetes: cada executor vira um pod.
Decide onde cada parte da execução deve rodar.
👉 No modo local, o próprio Spark age como cluster manager.
Worker Nodes
São as máquinas que fazem o trabalho pesado.
Cada worker recebe uma fatia do job e processa um conjunto de dados.
Quanto mais workers, maior a capacidade de processar em paralelo.
👉 Em produção, podem ser dezenas ou centenas de máquinas.
Tasks
São as unidades menores de trabalho que o Spark envia para os executors.
Cada task processa uma partição do DataFrame.
👉 Exemplo: se você tem um DataFrame com 1 milhão de linhas dividido em 10 partições, o Spark vai criar 10 tasks para processar em paralelo.
Resumindo, como tudo se conecta?
Você escreve um código no Driver (PySpark).
O Driver pede ao Cluster Manager para executar.
O Cluster Manager aloca recursos nos Workers.
Os Executors dentro dos workers processam as Tasks em paralelo.
O Driver coleta os resultados e devolve para você.
Principais componentes do Spark (bibliotecas integradas)

Além da arquitetura, o Spark vem com bibliotecas especializadas que ampliam seu poder:
Spark SQL
Permite escrever queries SQL sobre DataFrames.
Caso de uso: analisar dados de logs, gerar relatórios ad-hoc.
Exemplo: spark.sql("SELECT category, AVG(price) FROM produtos GROUP BY category").
Spark Streaming
Processamento de dados em tempo real (quase streaming, com micro-batches).
Caso de uso: monitorar cliques de usuários, processar dados de sensores IoT.
Exemplo: integrar com Kafka para processar eventos continuamente.
MLlib (Machine Learning Library)
Algoritmos de machine learning escaláveis (classificação, regressão, clustering).
Caso de uso: recomendar produtos em e-commerce, detectar fraudes.
Exemplo: treinar um modelo de regressão linear sobre milhões de linhas.
GraphX / GraphFrames
Processamento e análise de grafos.
Caso de uso: detectar comunidades em redes sociais, analisar rotas logísticas.
Exemplo: encontrar o caminho mais curto entre pontos em um grafo de transporte.
SparkR
Interface para usuários da linguagem R.
Caso de uso: cientistas de dados que já usam R podem aproveitar a escalabilidade do Spark.
Mão na massa: criando um ETL com Spark
Fluxo:
Extract: puxar dados da API https://dummyjson.com/products.
Transform: calcular métricas por categoria.
Load: salvar em formato Parquet.
Código ETL usando PySpark
Crie um arquivo Python e adicione o código abaixo:
Possível saída após execução do código
Leituras recomendadas
Conclusão
Você configurou o ambiente do Spark do zero e rodou seu primeiro ETL distribuído real.
Instalou o JDK e configurou o JAVA_HOME.
Criou um venv Python e instalou o PySpark.
Executou um pipeline Extract → Transform → Load.
👉 Não se preocupe se pareceu muita coisa de uma vez. Nos próximos capítulos (e no eBook avançado que estamos preparando), vamos aprofundar as transformações e integrações com a AWS.
O que vem a seguir?
👉 No Capítulo 6: Orquestração de Pipelines: Spark + Airflow na prática — Por que orquestrar Spark com Airflow.
Gostou desse capítulo?
👉 Assine a newsletter Coffee & Tips e receba os próximos capítulos direto no seu e-mail.
👉 Pré-venda exclusiva
Em breve também vamos lançar um E-Book avançado, com tutoriais em Spark, Airflow, Redshift, tudo para você se tornar um Engenheiro de Dados!
Cadastre-se agora na lista de pré-venda e garanta:
Acesso antecipado antes do lançamento oficial 🚀
Benefícios exclusivos para inscritos 💡
Conteúdo extra que não estará disponível gratuitamente
Fique ligado!



Comentários