Apresentação dada por mim (Alexsandro Francisco dos Santos) abordando como construindo um Pipeline de Dados no Stoodi utilizando das ferramentas AWS Glue e AWS Step Functions.
Inspirado na implementação proposta por Moataz Anany em https://amzn.to/2mITqn6.
Palestra dada dia 01/10/2019 no Meetup "Stoodi Data & Tech #3 - Data Pipelines".
2. ● Alexsandro Francisco
● Engenheiro de Dados no
Stoodi
● Graduando em Computação
● dev, robótica, maker,
pln/ml/ia, dados
Apresentação
alexsandr0x
Alexsandr0x
alexsandr0x.github.io
medium.com/stoodi
jobs.kenoby.com/stoodi
4. ● Desafios dentro do Stoodi
● Conhecendo o Glue
● Identificando problemas
● Conhecendo o Step-Functions
○ Executando o job por chamada direta
○ Executando um job por Lambda Function
● Expandindo as possibilidades
● Dicas
Introdução
5. 22 milhões de
visualizações em
nossos vídeos
Desafios dentro do Stoodi
18 mil vídeos em nossa
plataforma
3 milhões de usuários
na plataforma Stoodi
0.5 milhão de usuários
na plataforma Eligis
6. ● Empresa com cultura
Data Driven
● Dados de eventos dos
usuários na plataforma
Desafios dentro do Stoodi
● Data Warehouse
(Redshift)
● Plataforma de analytics
para todos os
colaboradores
● ETL em Batch dos
principais dados usados
● OBT para facilitar uso
para todos
● Data Lake no AWS S3
com todos os dados
● Pipeline usando AWS
Glue
7. “O AWS Glue é um serviço de
extração, transformação e carga
(ETL) gerenciado que facilita a
preparação e a carga de dados para
análises pelos clientes. [...]” - AWS
Conhecendo o Glue
8. ● Cuida do cluster Spark para você
● Data Catalog mapeia todas as suas tabelas
● Jobs cobrados por:
tempo de execução * dpu (data processing unit)
● Triggers para facilitar a orquestração de
múltiplos jobs (já falaremos deles...)
Conhecendo o Glue
9. ● Conexões: Redshift, AWS RDS, (outros por
JDBC)
● Crawler: CSV, JSON, Parquet e ORC, no
DynamoDB
● Jobs Spark em Python ou Scala
● Shell script python com numpy, sklearn,
pandas, boto3, etc...
Conhecendo o Glue
11. Conhecendo o Glue
Orquestrando o seus jobs
com triggers:
● Execução do seu job
através de
agendamento ou
término de um job
anterior
● Podemos organizar
com Workflow
13. Ou executar uma função
lambda:
Identificando problemas
Nem mandar um email para
a equipe de dados:
14. “AWS Step Functions makes it easy
to coordinate the components of
distributed applications as a series
of steps in a visual workflow.” -
AWS
Conhecendo o Step-Functions
15. Conhecendo o Step-Functions
● Foco em sistemas
distribuídos e
microsserviços
● Mas nada nos impede
de usar para orquestrar
pipelines de dados!
16. Executando o job por chamada direta
A definição da sua
state-machine é feita
em ASL (Amazon
States Language).
A state-machine
aparece de forma
visual para facilitar
sua vida.
17. Executando o job por chamada direta
Os “galhos” dentro do
tracejado são rodados em
paralelo
‘UpdateDB’ pode retornar
um status que leva a ‘last
level’ ou ‘simple level’
‘CWMetric’ roda
apenas quando todos
os ramos na etapa
paralela terminarem
18. Problema Resolvido?
Executando o job por chamada direta
Poucas ferramentas
integradas, não
temos todo o leque
da AWS
Podemos concentrar
todas as chamadas na
AWS Lambda!
20. Executando um job por Lambda Function
Activities. na prática,
tornam a step-function em
uma API, onde a transição
das etapas é feita através de
código. Dessa forma
podemos usar código em
AWS Lambda para
orquestrar nosso pipeline!
22. Executando um job por Lambda Function
Pipeline roda diariamente
através de um evento
Step Functions orquestra
múltiplos jobs.
A Lambda inicia os jobs e
trata potenciais erros
Lambda inicializa e persiste o
status dos jobs do AWS Glue
no DynamoDB.
23. Com a lambda podemos chamar
qualquer serviço aws como resposta
Executando um job por Lambda Function
Agora conseguimos rodar
paralelo!