Este documento apresenta uma solução de big data utilizando vários serviços da AWS, como Kinesis, EMR, Redshift e Quicksight. A solução coleta dados de várias fontes, os processa utilizando Spark no EMR, armazena os resultados no S3 e carrega no data warehouse Redshift para análises. O caso de uso apresentado é a análise de malha aérea para uma empresa de transporte aéreo.
13. Tipos de dados para a ingestão
Transacionais
• RDBMS
Arquivos
• Click-stream logs
• Texto livre
Stream
• IoT devices
• Tweets
Database
Cloud
Storage
Stream
Storage
14. Amazon Kinesis Firehose
Criaremos um stream com o Amazon Kinesis Firehose, para
os dados que serão coletados dos sistemas de origem
aws firehose create-delivery-stream
--delivery-stream-name STREAM-NAME
--s3-destination-configuration config.json
--region us-east-1
16. Ingestão de dados no Kinesis Firehose
Faremos uma ingestão baseado em dados que estão sendo
coletados de um sistema transacional
aws firehose put-record
--delivery-stream-name STREAM-NAME
--record Data=”JOAO DA SILVA,CLE,MCO,14”
20. Spark
• Motor para processamento de
dados em larga escala
• Suporte a aplicações escritas
em Java, Scala, Python ou R
• Combina SQL, streaming e
análises complexas
21. Desenvolvendo Spark/Python no Amazon EMR
## Interagindo com serviços como Amazon S3 via API (boto) ##
BUCKET-NAME
## Criando contexto no SPARK ##
PYTHON-APP
22. Desenvolvendo Spark/Python no Amazon EMR
## Processamento da Lógica de Negócio ##
BUCKET_NAME
## Gravando resultados processados no S3 em formato compactado ##
BUCKET_NAME
23. Lançar Apps no Cluster Spark do Amazon EMR
Usamos SSH para conectar no cluster:
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=30
-L 8001:localhost:18080
YOUR-AWS-SSH-KEY hadoop@YOUR-EMR-HOSTNAME
Iniciando o Spark shell:
spark-submit --master yarn-client PYTHON-APP.py
30. Carregar os dados no Amazon Redshift
Comando “COPY” carrega dados em paralelo
COPY voos
FROM 's3://YOUR-S3-BUCKET/voos-log-processado'
CREDENTIALS
'aws_access_key_id=YOUR-IAM-ACCESS_KEY;
aws_secret_access_key=YOUR-IAM-SECRET-KEY'
DELIMITER ’,' IGNOREHEADER 0, REMOVEQUOTES,
MAXERROR 0
GZIP;
31. Conectando no Amazon Redshift
# usando o PostgreSQL CLI
YOUR-REDSHIFT-ENDPOINT
Ou usando uma ferramenta JDBC ou ODBC SQL client com
suporte a drivers em PostgreSQL 8.x ou nativamente com
suporte ao Amazon Redshift
• Aginity Workbench for Amazon Redshift
• SQL Workbench/J
• DBVisualizer
32. Queries no Amazon Redshift
-- Número de registros
-- Quem transporta mais passageiros ?
-- Quem transporta mais passageiros com milhas ?