top of page

Coffee and Tips Newsletter

Inscreva-se na nossa newsletter semanal

Nos vemos em breve!

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

  • Foto do escritor: JP
    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 -version

Se não estiver, instale:

sudo apt update
sudo apt install -y openjdk-17-jdk

  • macOS

No macOS, o caminho mais simples é via Homebrew:

brew install openjdk@17

Depois, adicione ao seu perfil (~/.zshrc ou ~/.bashrc):

export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATH

  • Windows

  1. Baixe e instale o JDK 17 diretamente do site oficial da Oracle:👉 Download oficial – Oracle JDK 17

  2. Durante a instalação, marque a opção “Set JAVA_HOME variable” (se disponível).

  3. 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-17
  • Edite a variável Path e adicione:

%JAVA_HOME%\bin

  1. Teste no PowerShell:

java -version
echo $env:JAVA_HOME

Saí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)

  1. Descubra o caminho do Java 17:

update-alternatives --config java
  1. Configure o JAVA_HOME (sessão atual):

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

  1. Para 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 ~/.bashrc

  • macOS

  1. Descubra o caminho do Java 17, execute no terminal o comando abaixo:

/usr/libexec/java_home -V

  1. Configure (sessão atual):

export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATH

  1. Para deixar permanente, adicione ao ~/.zshrc ou ~/.bashrc.



  • Windows

  1. Abra Painel de Controle → Sistema → Configurações Avançadas → Variáveis de Ambiente.

  2. Crie a variável:


    Nome: JAVA_HOME

    Valor: C:\Program Files\Java\jdk-17


  3. Edite o Path e adicione:


%JAVA_HOME%\bin

  1. Teste 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_HOME

3. 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 PowerShell

4. 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 requests

Agora é 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 CLASSPATH

Nã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.


apache spark

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)


Apache spark

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:


  1. Extract: puxar dados da API https://dummyjson.com/products.

  2. Transform: calcular métricas por categoria.

  3. 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


bottom of page