Repositório contendo projeto pessoal de estudos utilizando o Apache Spark para a primeira fase do ETL, airflow para orquestração e cópia dos dados para o Data Warehouse (parte final). Também foi trabalhado com o conceito de lakehouse, realizando as ingestões em Delta.
O ambiente foi construído usando o docker, com os containeres do Airflow e Spark, rodando em uma vm na AWS EC2.
O objetivo foi consumir api's públicas/gratuitas e realizar a ingestão em uma camada raw (dado cru), em parquet e delta. Na camada trusted, foi realizada a limpeza dos dados, trazendo a última data de processamento de cada registro. E por fim, na camada refined, foi realizada a ingestão com os dados tratados e prontos para consumo.
A orquestração foi definida usando o Airflow, usando o SparkSubmitOperator para realizar a conexão com o container do spark.
Foram consumidas Api's de ações e com dados públicos, como dados da covid.
Todo o projeto foi executado em uma máquina Ubuntu na AWS, usando o Lambda para criação da função de start-stop da VM, e o EventBridge para execução do processo.
O container docker foi aproveitado de um projeto executado pelo Rodrigo Azevedo. Link do repositório: https://github.com/razevedo1994/airflow_and_spark_docker_environment
Exemplo de script de ingestão em Delta:
Exemplo de dag:
Dag graph:
Dados localizados no S3 após o particionamento:
Script Python criado com o AWS Lambda para o start-stop da vm no EC2:
Regras criadas para o start e stop da vm no EventBridge:
Script de Copy dos dados do s3 em parquet para o Redshift:
Dados consultados no Redshift: