Resumo:
Construção de um pipeline de dados escalável na AWS utilzando jobs em Spark com orquestração no Apache Airflow.
Para nosso Projeto Aplicado idealizamos um cenário fictício onde a empresa trabalha com um pipeline que executa cargas de trabalho em Spark no cluster EMR (ambiente AWS), onde também possui o seu datalake. As tarefas são executadas sob demanda e trabalham com uma faixa de tempo por vez.
OBS.: Estes são dados comerciais reais, foram anonimizados e as referências às empresas e parceiros no texto da revisão foram substituídas pelos nomes das principais casas de Game of Thrones.Os dados trabalhados se encontram em https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce?select=olist_order_items_dataset.csv![image](https://github.com/wca01/Projeto_Aplicado_mba_xpe22/assets/105304356/aec18eef-8325-47f0-9498-07abd2878015)
Os dados são recebidos e lidos, processados por um cluster EMR através de tarefas em Spark, depois enviados aos buckets para serem depois acessados pela áreas interessadas. A pipeline ETL segue o diagrama abaixo. Temos um ambiente com tarefas Spark rodando dentro de um cluster EMR e carregando dados em buckets no ambiente AWS.
Alguns pontos onde é possível fazer melhorias:
- Performance
- Eficiência de custo
- Tolerância a falhas
O pipeline proposto com o cluster Kubernetes executa tarefas do Spark e é orquestrado pelo Airflow. Os dados são extraidos da landing zone, tratados e enviados para a zona de entrega ao fim do processo. Adicionamos um crawler para enviar dados específicos para um database e preencher uma tabela que poderá ser consultada no Athena utilizando linguagem SQL.
Para a parte de código das tarefas Spark, configuramos um repositório Github onde s desenvolvedores poderão editar e administrar as DAGs.
-
Criação de buckets no Datalake via Terraform
-
Script eksctl para criação do Cluster EKS
-
Deploy do Airflow no Kubernetes
-
Código YAML para configurar o Github
-
Pod do Airflow no cluster Kubernetes
-
Código pyspark para o Airflow
-
DAG
-
Airflow executando os jobs
Pipeline completo, utilizando o EKS, Airflow, tarefas Spark, DAGs remotas no Github e consulta de dados no Athena.