Skip to content

Repositório para processamento de dados utilizando Spark e armazenamento no MinIO.

Notifications You must be signed in to change notification settings

ssantosfer/minio-spark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Processamento de Dados com Apache Spark e Armazenamento no MinIO

Descrição

Este projeto demonstra o uso do Apache Spark para processamento de dados e do Minio para armazenamento de dados em larga escala. A combinação dessas tecnologias permite a análise eficiente de grandes volumes de informações e o armazenamento seguro e escalável de dados brutos e resultados.

Conteúdo

  1. Introdução

Você sabe o que é o Apache Spark e o MinIO? Abaixo vou trazer um breve contexto do que é cada uma dessas duas tecnologia e aplicabilidade no projeto desenvolvido.

Apache Spark

O Apache Spark é um framework de código aberto projetado para processamento de dados em larga escala e análise de dados. Ele foi desenvolvido para ser rápido, flexível e fácil de usar. O Spark processa os dados em memória sempre que possível, o que o torna significativamente mais rápido que os sistemas de processamento de dados tradicionais, como o Hadoop.

Sendo assim, o Spark é amplamente usado em projetos de análise de dados, aprendizado de máquina, processamento de dados em tempo real e ETL (Extract, Transform, Load). É uma escolha popular para organizações que precisam lidar com grandes volumes de dados de forma eficiente.

MinIO

Minio é um servidor de armazenamento de objetos de código aberto que permite o armazenamento, recuperação e gerenciamento eficiente de objetos de dados, como imagens, vídeos, documentos e outros tipos de arquivos.

No projeto, o spark foi utilizado para consultar os dados, em CSV, armazenados na camada Landing no MinIO. Processa-lós e trata-lós usando o spark e armazena-lós novamente nas camadas de processing (dado sem nenhum modificação, apenas com o formato do arquivo alterado para parquet) e curated (dado já agregado para a necessidade do negócio)

  1. Requisitos

Para realizar o projeto, é necessário ter o MinIO e o Spark configurado localmente no seu computador.

  1. Configuração

Realizei todo o processo de configuração dos programas em uma máquina virtual linux (Ubuntu) por conta da facilidade nas configurações. Logo, o passo a passo abaixo será pensando em um SO Linux:

MinIO:

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20231101183725.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb
mkdir ~/minio
minio server ~/minio --console-address :9090

Spark:

sudo apt update
sudo apt install default-jdk
wget https://dlcdn.apache.org/spark/spark-3.4.0/spark-3.4.0-bin-hadoop3.tgz
tar xvf spark-3.4.0-bin-hadoop3.tgz
sudo mv spark-3.4.0-bin-hadoop3 /opt/spark
nano ~/.bashrc
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin
source ~/.bashrc

Maven:

Baixar os arquivos JARs de acordo com a versão do Spark que foi baixada anteriormente. São dois arquivos JARs que precisam ser baixados:

  • O primeiro você encontra na linha de files.
  • O segundo fica disponivel na parte de Compile Dependencies (1).

Após o download desses dois arquivos, eles devem ser incluidos dentro da pasta de JARs do spark.

  1. Execução do Projeto

A execução do projeto é realizada via spark-submit no terminal de consulta. Pelo seguinte código:

spark-submit --name job1-app job-spark.py --verbose

O arquivo do projeto (job-spark.py) deve estar na sua pasta Home ou vai precisar passar o caminho que o arquivo do projeto vai estar salvo na sua máquina.

  1. Estrutura do Projeto
|-- data/                # Dados de exemplo
|-- job-spark.py/        # Arquivo do Projeto em Python
|-- README.md            # Este arquivo
  1. Links Úteis

Exemplo de Uso

print ("\nImprime os dados lidos da lading:")
print (df.show())

image

print ("\nImprime o schema do dataframe lido da raw:")
print (df.printSchema())

image

print ("\n ========= Imprime o resultado do dataframe processado =========\n")
print (df_result.show())

image

About

Repositório para processamento de dados utilizando Spark e armazenamento no MinIO.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages