- Consiga buscar tweets com uma determinada “HashTag”, por exemplo, covid19;
- Armazenar os resultados em formato Parquet;
- Criar um Data Warehouse para que seja possível consolidar dados analíticos por hashtag e posteriormente consultar informações coletadas de forma batch/online.
- Spark – Para extração, escrita e consolidação;
- Airflow – Orquestração do processamento;
- Docker/Compose – Para deploy da aplicação;
- Organização;
- Testes automatizados;
- Boas práticas de Data Engineering;
- Arquitetura;
- Solução para Deploy em produção;
- Criatividade.
A aplicação foi desenvolvida em Python, utilizando Pyspark e a biblioteca Tweepy, uma biblioteca para Python que facilita a conexão com a API do Twitter.
A aplicação está dividida em duas etapas:
1º Etapa: Realizar o streaming de tweets em tempo real, sendo esse o código do arquivo 2.TwitterAPIListener.py, onde dado uma lista de keywords a serem buscados em tweets, a aplicação irá:
- Realizar a conexão com a API de streaming do Twitter;
- Baixar os tweets em tempo real;
- Salvá-los em uma layer1 de dados de forma particionada e em arquivos no formato parquet.
2º Etapa: Criar um Data Warehouse com os dados salvos na layer1, sendo esse o código 3.DataWarehouse.py, no qual sua função é a cada 60 minutos:
- Ler os dados salvos na layer1 na última hora;
- Realizar os devidos tratamentos dos dados como:
- Cast das colunas para seus respectivos tipos de dados,
Integer
,Boolean
,Timestamp
eString
; - Ajuste de fuso horário das colunas de timestamp para "America/Sao_Paulo";
- Cast das colunas para seus respectivos tipos de dados,
- Criar as tabelas fato e dimensão;
- Salvá-las de forma particionada e em formato parquet numa layer2 de dados.
- A implementação de um orquestrador do fluxo de dados, como por exemplo o Airflow sugerido no case;
- A criação de um ambiente Docker/Compose para deploy da aplicação.
- Armazenamento na Amazon S3.