Skip to content

DieGit0/data_realtime_-_batch_analytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Engenharia de Dados - Data streaming and batch processing in AWS services

Esse projeto tem como finalidade demonstrar conhecimentos adquiridos e replicar a arquitetura/pipeline de Streaming e Batch de dados adquiridos no curso:
https://www.udemy.com/course/real-time ministrado pelo Prof. Fernado Amaral https://www.udemy.com/user/fernando-amaral-3

Parte I: Streaming de dados em tempo real

Consumo de API que disponibiliza dados climáticos e emite alertas por email e SMS via AWS SNS
Duas aplicações python, uma para ingestão de dados no Broker (Kinesis Streaming) e outra para avaliação dos mesmos a fim de disparar eventos de acordo com parametros do clima estabelecidos previamente em variávis de ambiente de uma lambda function. Ao final, EventBridge é utilizado para schedular a entrega em periodos especificos

Parte II: Batch de dados para Analytics

Disponibilza dados para posterior análise de eventos climáticos, consumidos pelo broker e processados por uma aplicação python que particiona os dados brutos semi-estruturados e os armazena em um S3
Um crawler é usado para capturar o schema e gerar um data catalog e um processo de ETL é realizado para transformação dos mesmos em formato parquet.
Ao final, um novo data catalog é disponibilizado e otimizado para consultas por meio do Athena ou qualquer outra ferramenta de BI

Arquitetura geral:

0-arquitetura

Parte I

Etapas

Etapas Serviço
1 API: https://app.tomorrow.io/home
2 IAM Roles
3 Kinesis Data Stream (Broker)
4 Producer - Lambda + Python
5 Consumer - Lambda + Python
6 SNS
7 EventBridge

Tecnologias utilizadas:

image image image image image

Data Workflow:

  • Produtores : aplicação Python envolta em um Lambda requisita dados em tempo real para a API

  • Broker : ingestão dos dados por meio do Kinesis Data Stream

  • Consumidores: aplicação Python envolta em um Lambda consulta registros do Broker e dispara eventos para tópicos do SNS segundo parametros do clima estipulados previamente

  • Scheduler: EventBridge estipula dia e hora para entrega de mensagens pontuais

  • Alerta: SNS tópicos de EMAIL e SMS

Imagens:

  • 1. Tomorrow API:

image

  • 1.1. API response:

image

  • 2. IAM Roles:

image

  • 3. Broker - Kinesis data stream:

image

  • 4. Producer - Lambda + Python:

image
image
image

  • 5. Registros Json: Kinesis data stream::

image

  • 6. Consumer - Lambda + Python:

image
image

  • 7. EventBridge:

image

  • 8. SNS - Alerta:

image
image

  • 8.1. SNS - Email e SMS:

image
image
image

Parte II

Etapas

Etapas Serviço
1 S3 bucket
2 IAM Roles
3 Consumer: Lambda + Python
4 Kinesis Data Stream (Broker)
5 Glue Crawler
6 Glue Job ETL
7 Parquet
8 Data Catalog
9 Athena

Tecnologias utilizadas:

image image image

Data Workflow:

  • Produtores : Workflow Parte I

  • Consumidores: aplicação Python + Lambda function consulta dados disponiveis no Broker e persiste os mesmos em formato padrão particionados por ano/dia/hora em S3 pasta raw

  • Raw Crawler: reconhece schema e disponibiliza Data Catalog para raw data

  • ETL: realiza transformação dos dados "brutos" em formato parquet na pasta gold

  • Gold Crawler : gera um novo schema a partir dos arquivos parquet e disponibiliza Data Catalog otimizado para consultas

  • Analytics: Athena para consultas ad-hoc

  • 1. S3 bucket:

image

  • 2. Consumer batch:

image
image
image

  • 3. Raw data (json):

image

  • 4. Crawlers:

image

  • 5. Data Bases:

image

  • 6. Raw data (Schema):

image
image

  • 7. ETL Job:

image
image
image

  • 8. Parquet:

image

  • 9. Gold Schema:

image
image
image

  • 10. Athena:

image image