top of page

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

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). Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Capítulo 3: Data Lake, Data Warehouse e o conceito de Lakehouse Capítulo 4: Orquestração de Pipelines com 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 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-17 Edite a variável Path e adicione: %JAVA_HOME%\bin 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) Descubra o caminho do Java 17: update-alternatives --config java Configure o JAVA_HOME  (sessão atual): export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH 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 Descubra o caminho do Java 17, execute no terminal o comando abaixo: /usr/libexec/java_home -V Configure (sessão atual): export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATH Para 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%\bin 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. 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 Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Capítulo 3: Data Lake, Data Warehouse e o conceito de Lakehouse Capítulo 4: Orquestração de Pipelines com Airflow Criando ETLs simples com Python Guia Técnico: Princípios e Arquitetura do Apache Spark para Iniciantes Como Shuffle e Coalesce funcionam no Apache Spark Introdução ao Apache Hive com Spark e Java Lendo arquivo CSV com Apache Spark  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!

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