/leitura_apis_spark_airflow

Repositório contendo projeto pessoal de estudos utilizando o Apache Spark para o ETL e o Airflow para orquestração

Primary LanguagePython

leitura_apis_spark_airflow

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

Screenshots

Exemplo de script de ingestão em Delta:

image

Exemplo de dag:

image

Dag graph:

image

Dados localizados no S3 após o particionamento:

image

Script Python criado com o AWS Lambda para o start-stop da vm no EC2:

image

Regras criadas para o start e stop da vm no EventBridge:

image

Script de Copy dos dados do s3 em parquet para o Redshift:

image

Dados consultados no Redshift:

image