Engenheiros de dados: projeto de engenharia de dados passo a passo
se você está planejando melhorar suas habilidades e se envolver em alguns projetos técnicos pesados, eu entendi, este artigo é para você, os próximos também, vou destacar o melhor para você, como sempre menciono, o bom conhecimento é distribuído aqui.

Neste artigo, vamos detalhar como construir uma pilha de dados usando a ferramenta de gerenciamento de fluxo de trabalho apache airflow , criar painéis com Dash plottly , reunir métricas com Statsd e visualizar o desempenho usando Prometheus e Grafana .
Todas as atribuições especificadas acima estão progredindo para serem conectadas usando a composição do docker . alguns de vocês não tiveram a chance de trabalhar com isso, então vamos dar uma breve definição dele.

Imagine que você está trabalhando com muitos containers ao mesmo tempo, cada um deles tem sua função específica, você vai manusear cada um deles separadamente? CLARO QUE NÃO ! . O Docker Compose é uma ferramenta que ajuda a superar esse problema e lidar facilmente com vários contêineres de uma só vez.
Posso ver você se perguntando por que comecei o artigo falando sobre o docker compose , mas tudo bem, vou explicar o porquê. Quero que vocês entendam que é obrigatório pensar nos fundamentos de todo projeto de TI antes de começar a se aprofundar. O Docker Compose nos permitirá iniciar todos os serviços necessários para o nosso projeto.
Vamos dar uma olhada em nosso arquivo docker compose ( docker-compose-LocalExecutor.yml ):
todo arquivo docker-compose tem atributos que precisamos entender:
- versão: versão do docker compose
- image: imagem do docker a ser extraída do hub do docker
- depende_on: aqui precisamos mencionar quais serviços estão vinculados ao serviço atual, por exemplo, o apache airflow precisa de Postgres e Mysql para armazenar metadados dos dags
- ambiente: aqui definimos as variáveis de ambiente do serviço, por exemplo POSTGRES_USER = airflow que será usado quando iniciarmos o serviço.
- command : o primeiro comando bash que você precisa que seja executado sempre que o serviço for iniciado
- volumes : o local dentro do seu contêiner que será montado em seu sistema de arquivos, por exemplo, os dados transformados dos pipelines serão armazenados em um local de armazenamento persistente
- portas: é a mídia de onde seus contêineres usariam para se comunicar com outros serviços, por exemplo, os dados serão ingeridos no Statsd do fluxo de ar através da porta 8125 usando o protocolo udp (confira a captura de tela abaixo).
- Inicie os serviços de banco de dados:
- raspagem de dados e automatizá-lo usando o fluxo de ar do Apache .
- painéis usando Dash plotly .
- monitore-o usando 3 ferramentas: Statsd, Prometheus, Grafana.
- fonte de dados :https://www.fahrrad.de/
- o nome da marca
- a categoria
- o nome do modelo
- o preço
- a foto da bicicleta
- PythonOperator : para o script de raspagem da web
- BashOperator: para definir tarefas de administração do Linux
- EmailOperator: Para enviar e-mails quando o pipeline terminar


3.Iniciar estatísticas:

4. Inicie o Prometheus e o Grafana:


Então, como podemos ver, todas essas definições estão escritas no mesmo arquivo e serão iniciadas todas juntas com um simples comando para atingir o objetivo do projeto.
O projeto está dividido em 3 grandes etapas:

vamos extrair:
Os scripts de raspagem serão automatizados usando a ferramenta mais poderosa apache airflow, mas se você nunca a usou antes, darei uma breve visão geral sobre a ferramenta.
Apache airflow é uma ferramenta de gerenciamento de fluxo de trabalho que possui muitos operadores que podem ajudar qualquer engenheiro de dados a projetar e orquestrar os trabalhos de projetos de cientistas de big data, por exemplo, automatizar scripts de coleta de dados. os operadores usados neste projeto são:
o Dag é uma sequência de tarefas e cada tarefa é definida usando um operador
a tarefa deve ter um lugar definido e ordenado (t1 >> t2: a tarefa um deve ser executada antes da tarefa 2)

Depois de coletar dados da fonte (o site usando o método de raspagem), agora é hora de obter insights dele, é por isso que construímos um painel interativo usando o Dash plotly .
Dash plotly : é um framework para escrever aplicações web interativas, escritas em cima do Flask, Plotly. js e React. js .

Agora, vamos fazer um trabalho pessoal, enquanto o trabalho está sendo executado, ele irá gerar métricas que devem ser monitoradas, essas métricas serão enviadas do fluxo de ar através da porta 8125 para Statsd usando o protocolo udp (você pode verificar no arquivo de composição do docker ), os dados das métricas não podem ser exibidos em uma interface organizada se usarmos apenas statsd , portanto, contaremos com o Prometheus e o Grafana para alcançar o que estamos procurando.



todo o processo é feito desta forma:

Vídeo do projeto:
Conclusão:
Neste artigo, construímos toda uma pilha de dados: começando com a coleta de dados usando um script python, passando para a construção de um painel para extrair insights úteis dele, também monitorando o pipeline de dados e vendo o desempenho das diferentes tarefas. Espero que tenha gostado de ler meu artigo e sinta-se à vontade para me fazer qualquer pergunta e estou ansioso para ouvir suas idéias sobre o próximo artigo.
repositório GIT:
https://github.com/chiheb08/data_enginnering_project