Skip to content

cauamarques22/spark-kafka

Repository files navigation

Introdução

Esse módulo é uma Stack de Streaming usando Spark + Kafka. Ele utiliza o Spark para ler constantemente dados do Kafka, processá-los e criar registros utilizando Delta Lake.

Há 4 arquivos principais:

  1. kafka-consumer.py: Consome uma mensagem do Kafka e imprime ela na tela.
  2. kafka-prod.py: Produz mensagens para o Kafka.
  3. spark-kafka.py: Escuta um tópico no Kafka, trata os dados e cria uma Delta Table.
  4. main.ipynb: Notebook utilizado para testes.

Setup do Ambiente de Desenvolvimento

Para utilizar essa Stack, é necessário fazer o Setup do ambiente completo.

Observação:

  1. Esse setup é feito para ambientes Linux
  2. Esse setup assume que você usará o Spark localmente

Setup do Spark

Primeiro, é necessário baixar o Apache Spark. Para isso execute o seguinte comando no terminal:

wget https://dlcdn.apache.org/spark/spark-4.0.1/spark-4.0.1-bin-hadoop3.tgz

Com isso, você terá obtido os binários do Apache Spark, em um arquivo .tgz. Depois execute:

tar -xvzf spark-4.0.1-bin-hadoop3.tgz

E você terá extraído o arquivo para um diretório. O nome do arquivo pode variar, caso a sua instalação seja diferente troque o nome do arquivo .Depois, você precisa criar a Home do Spark. Podendo ser feito da seguinte forma:

mv spark-4.0.1-bin-hadoop3 ~/spark

Esse comando move o diretório para o diretório no caminho especificado. Então a pasta spark-4.0.1-bin-hadoop3 estará na HOME do seu sistema operacional renomeado como spark.

Pronto! Agora todas as dependências do Spark foram instaladas e configuradas.

Setup do Java

Para instalarmos o Java, podemos utilizar o gerenciador de pacotes do Sistema Operacional:

Para distribuições tipo Debian use sudo apt install openjdk-17-jdk, para outras distribuições baseadas em Fedora utilize sudo dnf install java-17-openjdk-devel.

Depois verifique se o Java foi instalado corretamente: java --version.

Caso ele imprima no terminal o número da sua versão e outras informações isso significa que o Java foi instalado corretamente. Se quiser garantir que o seu programa irá conseguir encontrar a HOME do Java (na maioria dos casos não é necessário), então prossiga executando:

which java

Esse comando irá dizer qual é o caminho do Java que está sendo utilizado. Anote esse caminho e coloque no código python como variável de ambiente.

import os

os.environ["JAVA_HOME"] = "caminho/retornado/pelo/comando"

Setup do Kafka

Para fazer o setup do Kafka é bem simples. Basta estar no diretório do repositório (Ou no diretório onde o arquivo docker-compose.yaml se encontra) e executar o comando docker compose up -d que ele irá colocar as imagens do Kafka, do ZooKeeper e da UI no ar.

Setup do Ambiente de Produção

Caso queira executar em um ambiente de produção, basta ir no diretório prod/, editar o arquivo spark-example.py, criar a imagem usando docker build -t minha-imagem . e a imagem com o Spark já estará pronta.

Agora basta ir no diretório onde docker-compose.yaml está e execute docker compose up -d para que o Kafka esteja ativo.

Como executar o container Spark:

# Modo 1:

docker run -it --rm \
-v $(pwd)/spark-example.py:/app/spark-example.py \
job-spark \
spark-submit /app/spark-example.py

# Modo 2 (Se não setar um volume no script):

docker run -d --rm \
job-spark \
spark-submit /app/spark-example.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published