Esse projeto foi criado com o intuito de colocar em prática os conteúdos aprendidos sobre as ferramentas Airflow e Spark. Nele é realizado o tratamento de dados presentes em um arquivo csv, em seguida exportar os dados para um arquivo no formato parquet e realizado o upload na ferramenta Minio e banco de dados PostgreSQL.
- 🐘 PostgreSQL: Ferramenta de banco de dados relacional;
- ⭐ Spark: Ferramenta para tratamento e manipulação de dados;
- 🟇 Airflow: Orquestração de tarefas, altamente utilizado com tarefas de ETL;
- 🐳 Docker: Permite a criação e execução de ambiente isolados para aplicações e processos;
- 🐍 Python: Linguagem de programação utilizada principalmente para processos de ETL;
- 🦢 Minio: Permite o deploy e utilização de servidor de armazenamento de objetos, utilizando o padrão de API e uso do S3;
- 🖽 Parquet: Formato de arquivo otimizado para consulta de dados, utilizando formato de armazenamento em colunas;
- 𝚇 CSV: Formato de arquivo humano-legível, utilizado para consultas simples e com armazenamento em linhas.
-
/dags/aulas:
Possui os arquivos de definição das DAGs criadas durante o período de estudo da ferramente Airflow. Veja:
/dags/aulas -
/dags/projeto_airflow:
Possui os arquivos de definição da DAG criada para o projeto prático que combina a utilização das ferramentas Airflow e Spark. veja:
/dags/projeto_airflow -
docker-compose.yaml
Arquivo de configuração do ambiente de execução Airflow Veja:
docker-compose.yaml -
Dockerfile
Arquivo para customização (extensão) da imagem base do Airflow, adicionando a biblioteca do PySpark Veja:
Dockefile -
/data
Pasta de armazenamento dos arquivos de dados utilizados durante as aulas e o projeto Veja:
/data
- Crie as variáveis de ambiente
_AIRFLOW_WWW_USER_USERNAMEe_AIRFLOW_WWW_USER_PASSWORD. Caso as variáveis não sejam criadas, o usuário e senha do Airflow terão valor "airflow" por padrão.
-
Certifique-se de ter o Docker instalado.
-
No terminal, dentro do diretório do repositório, execute (substituindo o nome e a tag):
docker build . --tag extending_airflow:latest -
Com a imagem personalizada criada, execute os containers utilizando:
docker compose up -d
-
Utilize o comando
docker pspara identificar o id do container executando o postgres, acesse o container utilizando o comandodocker exec -it <id-do-container> bash -
Ao acessar o container do postgres, acesse o banco utilizando
psql -U airflowe execute o comandoCREATE DATABASE test; -
Acesse o Airflow, na página
https://localhost:8080utilizando o valor definido nas variáveis ou utilize o valor padrão -
Na aba Admin, acesse a opção conexões nela realize a criação de uma nova conexão do tipo "postgres", adicione as variáveis
host 'postgres' login <user-definido-em-docker-compose> senha <senha-definido-em-docker-compose> port 5432 database test -
Ao navegar para a aba de DAG, é possível visualizar as DAGs criadas e executá-las
-
Para a execução do projeto, que possui o nome de DAG "Projeto_postgres", é necessário a execução da feramenta Minio (Modifique o usuário e a senha):
docker run \ --network=airflow_docker_default \ -p 9000:9000 \ -p 9001:9001 \ --user $(id -u):$(id -g) \ --name minio1 \ -e "MINIO_ROOT_USER=ROOTUSER" \ -e "MINIO_ROOT_PASSWORD=CHANGEME123" \ -v ${HOME}/minio/data:/data \ quay.io/minio/minio server /data --console-address ":9001"
-
Acesse o link disponibilizado na execução acima com a identificação "API", realize o login e a criação de um novo bucket nomeando o "airflow"
-
Retorne a página de conexões e crie uma nova conexão do tipo "aws", adicione o usuário ao campo
AWS Access Key IDe a senha aoAWS Secret Access Keye no campoExtra Fields JSONadicione o seguinte JSON:{ "endpoint_url": "http://minio1:9000" } -
Com esse passos é possível acionar a DAG do projeto.