- Este projeto demonstra a análise de vendas usando PySpark dentro de um contêiner Docker.
- O objetivo é criar um DataFrame com um volume significativo de dados, realizar operações de agregação e exibir os resultados.
- O ambiente de execução é isolado e replicável, utilizando Docker.
Grupo (Cascas de Bala)
- Dyelle Hemylle Nunes de Almeida
- Ingrid Gabrielly Camara Lira
- Jarmison Kecio Ferreira da Cunha
- Kleber Lucas Lopes Alves
- Tállyson Emanoel Roques Izidio
- Vitor Eduardo de Carvalho
- Docker instalado na sua máquina.
- Site oficial para baixar e instalar o Docker.
├── app/
│ └── app.py
└── Dockerfile
└── README.md
└── package-lock.json
Para construir a imagem Docker, execute o seguinte comando no diretório raiz do projeto (datalake-spark-project):
docker build -t datalake:latest .
Para executar o contêiner Docker com a imagem construída, use o comando:
docker run datalake
Este projeto depende das seguintes tecnologias e bibliotecas:
- Apache Spark: uma estrutura de computação distribuída para processamento de dados em grande escala.
- PySpark: a API Python para Apache Spark, permitindo a manipulação de grandes conjuntos de dados.
- Docker: uma plataforma para desenvolver, enviar e executar aplicações em contêineres.
Certifique-se de que as seguintes dependências estão instaladas na sua máquina:
-
Docker:
- Siga as instruções de instalação no site oficial do Docker.
-
Python (opcional, apenas se você quiser executar os scripts localmente sem Docker):
- Instale a versão mais recente do Python a partir do site oficial do Python.
- Instale o PySpark usando o pip:
pip install pyspark
Esta seção detalha os scripts e programas incluídos neste projeto, explicando sua funcionalidade e estrutura.
app.py:
- Este script realiza a análise de vendas utilizando PySpark.
- Ele cria um DataFrame com dados de produtos, quantidade e preço, calcula a receita total e a média de vendas por produto, e exibe os resultados.
- Inicializa a sessão do Spark para processar dados.
Dockerfile:
- Configura o ambiente necessário para executar o script app.py em um contêiner Docker.
- Instala Python e bibliotecas necessárias.
- Define o diretório de trabalho e copia os arquivos do projeto.
- O contêiner executa app.py ao iniciar.
Se você preferir executar o script localmente sem usar Docker, você pode seguir estas etapas:
- Certifique-se de que o PySpark está instalado (como mencionado anteriormente).
- Navegue até o diretório onde o
app.py
está localizado. - Execute o script usando o comando:
python app/app.py
Após executar o contêiner ou o script localmente, você verá uma saída semelhante a esta:
Produto | Quantidade | Preco |
---|---|---|
Produto1 | 1 | 150 |
Produto2 | 2 | 250 |
Produto3 | 3 | 350 |
... | ... | ... |
Produto | Receita_Total |
---|---|
Produto9 | 2755000 |
Produto8 | 2380000 |
Produto5 | 1375000 |
... | ... |
Produto | Media_Vendas |
---|---|
Produto9 | 27550.0 |
Produto8 | 23800.0 |
Produto5 | 13750.0 |
... | ... |
- Inicialização da SparkSession: o script começa criando uma SparkSession, que é a entrada principal para a funcionalidade de Spark.
- Criação do DataFrame: gera um DataFrame com 1000 registros, cada um representando vendas de diferentes produtos.
- Operações de Agregação: o script calcula a receita total e a média de vendas por produto, utilizando funções de agregação do PySpark.
- Exibição dos Resultados: os resultados das operações de agregação são exibidos no console.
- Execução em Docker: o projeto é executado dentro de um contêiner Docker para garantir um ambiente consistente e replicável.
- Isolamento de Ambiente: Docker fornece um ambiente de execução isolado, garantindo que as dependências e configurações sejam consistentes em diferentes máquinas.
- Reprodutibilidade: o uso de contêineres garante que o código funcione da mesma maneira em qualquer máquina, eliminando problemas de "funciona na minha máquina".
- Facilidade de Distribuição: compartilhar o contêiner Docker com outras pessoas permite que elas executem o projeto sem precisar configurar o ambiente manualmente.
- Processamento de Alta Velocidade: Spark executa operações em memória sempre que possível, acelerando significativamente o processamento em comparação com frameworks baseados em disco como o Hadoop MapReduce.
- Escalabilidade: Spark é projetado para escalar horizontalmente, facilitando a adição de nós ao cluster para lidar com grandes volumes de dados e aumentar a capacidade de processamento. Funciona em uma variedade de ambientes (incluindo on-premises, AWS, Google Cloud, Azure, etc.).
- Versatilidade: Suporta múltiplas linguagens (Python, Java, Scala, R). Tem bibliotecas integradas para SQL, machine learning, processamento de grafos e streaming.
- Integração com Diversas Fontes de Dados: Conectores para HDFS, S3, Google Cloud Storage, bancos de dados SQL e NoSQL, Kafka, entre outros.
- Facilidade de Uso e Desenvolvimento Rápido: Oferece APIs de alto nível fáceis de usar e entender, promovendo desenvolvimento rápido e eficiente. Conta com uma shell interativa para Scala e Python, permitindo desenvolvimento e experimentação iterativa com dados.
- Robustez e Tolerância a Falhas: Lida eficientemente com falhas de nós, reprocessando operações a partir de dados já processados (RDDs). Tem uma comunidade ativa de desenvolvedores e amplo suporte, incluindo documentação detalhada, tutoriais e fóruns.
- Custo-Efetividade: Projeto de código aberto sem custos de licenciamento, podendo ser executado em hardware comum ou na nuvem, proporcionando flexibilidade de custos. Uso eficiente de recursos como processamento em memória e escalabilidade horizontal reduz custos operacionais.
- Capacidade de Processar Dados Estruturados e Não Estruturados: Processa uma ampla variedade de tipos de dados, incluindo estruturados (tabelas SQL), semiestruturados (JSON, XML) e não estruturados (logs, mídia).