- Docker
- Conta no GitHub e token de acesso
git clone https://github.com/CarlosCaastro/case.git
Atualizar o arquivo constantes.py com o usuário GitHub e token de acesso.
docker build -t pyspark-app .
Caso queira o arquivo csv para posterior análise.
docker run -d -v <DIRETORIO_DO_REPOSITORIO>:/app pyspark-app:latest
Caso queira apenas executar o arquivo main.py, os arquivos irão persistir apenas no container.
docker run pyspark-app:latest
Case
├── credentials
│ └── constantes.py
├── modules
│ ├── extract.py
│ ├── loader.py
│ ├── test.py
│ └── transform.py
├── output
├── dockerfile
├── main.py
└── Ifood - People Analytics - Modularization.ipynb
No arquivo constantes.py contém as definições das constantes que serão utilizada na execução do projeto, seja credenciais de token, caminho ou usuário que deseja ter as informações dos seguidores.
Este módulo contém classes e funções para extração de dados da API do GitHub.
Função que retorna informações do usuário do GitHub como nome, empresa, blog, e-mail, biografia, repositórios públicos, seguidores, seguindo e data de criação.
get_followers(self)
Método que extrai a lista de seguidores do usuário.
enrich_dataframe_with_github_info(self, df)
Método que enriquece o DataFrame com informações adicionais dos seguidores.
execute_extract_api(self)
Método que executa a extração de dados da API do GitHub e retorna um DataFrame enriquecido.
extract_csv(self, path)
Método que lê um arquivo CSV e retorna um DataFrame.
get_count_followers(self)
Método que retorna a contagem de seguidores do usuário no GitHub.
Este módulo contém a classe para carregar e salvar os dados transformados.
save_to_csv(self, df: DataFrame)
Método que salva o DataFrame em um arquivo CSV no caminho especificado.
Este módulo contém a classe para execução de testes e validação dos dados.
clean_company_check(self, df)
Método que verifica se a coluna "company" ainda contém o caractere '@' ou não.
date_format_check(self, df)
Método que verifica se a coluna "created_at" está no formato de data dd/mm/yyyy.
volumetry_check(self, df)
Método que verifica se a contagem de seguidores no DataFrame corresponde à contagem atual de seguidores no GitHub.
Este módulo contém a classe para transformação dos dados extraídos, com base nos requerementos do case.
transform(df: DataFrame)
Método estático que transforma o DataFrame, removendo o caractere '@' da coluna "company" e formatando a coluna "created_at" para o formato dd/MM/yyyy.
O output desse projeto é um arquivo CSV conténdo as informações dos seguidores do usuário, como nome, companhia, blog, email. bio, quantidade de repositórios publicos, quantidade de seguidores, quantidade de usuários que está seguindo e quando foi criado.
A pasta output, contém um exemplo de saída.
O arquivo dockerfile é responsável por criar uma imagem do Docker utilizando uma imagem do Python3.8 - Slim e instalar as dependencias necessárias como pyspark e requests para executar o arquivo main.py
Arquivo principal que orquestra a execução de todo o processo ETL e a validação dos dados.