AWS Data Processing Flashcards
Processing Services
AWS Lambda
Amazon ML
AWS Glue
Sagemaker
EMR
Data Pipeline
O que é o AWS Lambda?
Serviço que permite executar código sem provisionar ou gerenciar servidor.
Exemplos de uso do AWS Lambda
Executa código em resposta a eventos como alterações de dados no S3, atualizações em bancos de dados NoSQL, atividades de streaming de dados, etc.
Why not just run a server?
- Server management (patches, monitoring, hardware failures,
etc.) - Servers can be cheap, but scaling gets expensive really fast
- You don’t pay for processing time you don’t use
- Easier to split up development between front-end and back-end
Por que não apenas executar um servidor?
- Gerenciamento de servidores (patches, monitoramento, falhas de hardware,
etc) - Os servidores podem ser baratos, mas o escalonamento fica caro muito rápido
- Você não paga pelo tempo de processamento que não usa
- Mais fácil de dividir o desenvolvimento entre front-end e back-end
Main uses of Lambda
- Real-time file processing
- Real-time stream processing
- ETL
- Cron replacement
- Process AWS events
Principais usos do Lambda
- Processamento de arquivos em tempo real
- Processamento de fluxo em tempo real
- ETL
- Substituição do cron
- Processar eventos da AWS
Supported languages
- Node.js * Python * Java * C# * Go * Powershell * Ruby
No Lambda com Kinesis como configurar o acionador?
Você especifica um tamanho de lote ao configurar o acionador (até 10.000 registros)
Como o Lambda atua com o Kinesis através de código?
Código Lambda recebe um evento com um lote de registros de stream
Qual o limite de carga útil entre Lambda e Kinesis
6MB
O que acontece se o lote for muito grande ao acionar o Kinesis com o Lambda?
Pode causar timeouts
Cost Model Lambda
- “Pay for what you use”
- Generous free tier (1M requests/month, 400K GB-seconds compute time)
- $0.20 / million requests
- $.00001667 per GB/second
Modelo de custo do Lambda
- “Pague pelo que usar”
- Generoso nível gratuito (1M
solicitações/mês, computação de 400K GB por segundo) - US$ 0,20/milhão de solicitações
- $.00001667 por GB/segundo
Other promises Lambda
- High availability
- No scheduled downtime
- Retries failed code 3 times
- Unlimited scalability*
- Safety throttle of 1,000 concurrent executions per region
- High performance
- New functions callable in seconds
- Events processed in milliseconds
- Code is cached automatically
- But you do specify a timeout! This can cause problems. Max is 900 seconds (15 min)
Lambda - Outras promessas
- Alta disponibilidade
- Sem tempo de inatividade programado
- Novas tentativas de código com falha 3 vezes
- Escalabilidade ilimitada
- Limite de segurança de 1.000
execuções simultâneas por região - Alto desempenho
- Novas funções que podem ser chamadas em segundos
- Eventos processados em milissegundos
- O código é armazenado em cache automaticamente
- Mas você especifica um tempo limite!
Isso pode causar problemas. máximo é
900 segundos (15 minutos)
Anti-Patterns
- Long-running applications
- Use EC2 instead, or chain functions
- Dynamic websites
- Although Lambda can be used to develop “serverless” apps that rely on client-side AJAX
- Stateful applications
- But you can work in DynamoDB or S3 to keep track of state
O que é serviço Elasticsearch
Serviço de busca e análise de dados em tempo real, baseado em código aberto e distribuído sob a licença Apache.
What is Glue?
- Serverless discovery and definition
of table definitions and schema * S3 “data lakes” * RDS * Redshift * DynamoDB * Most other SQL databases - Custom ETL jobs * Trigger-driven, on a schedule, or on demand
- Fully managed
O que é o Glue?
Serviço de integração de dados sem servidor que facilita a descoberta, preparação, movimentação e integração de dados de várias fontes de análise, ML e aplicações.
Glue + Hive
- Hive lets you run SQL like queries from EMR
- The Glue Data Catalog can serve as a Hive metastore
- You can also import a Hive metastore into Glue
Como o catálogo de dados do Glue pode servir em relação ao Hive?
O catálogo de dados do Glue pode servir como um “metastore” do Hive
Qual o comando no AWS Lambda para carregar dados no Redshift?
Para carregar dados no Redshift a partir do AWS Lambda, você pode usar a biblioteca do AWS SDK para JavaScript para executar o comando COPY do Redshift.
Glue ETL
- Automatic code generation
- Scala or Python
- Encryption
- Server-side (at rest)
- SSL (in transit)
- Can be event-driven
- Can provision additional “DPU’s” (data processing units) to increase
performance of underlying Spark jobs - Enabling job metrics can help you understand the maximum capacity in
DPU’s you need - Errors reported to CloudWatch
- Could tie into SNS for notification
Glue ETL Funções
- Geração automática de código
- Scala ou Python
- Criptografia
- Lado do servidor (em repouso)
- SSL (em trânsito)
- Pode ser orientado a eventos
- Pode provisionar “DPUs” adicionais (unidades de processamento de dados) para aumentar desempenho de trabalhos Spark subjacentes
- A ativação de métricas de trabalho pode ajudá-lo a entender a capacidade máxima em
DPUs que você precisa - Erros relatados ao CloudWatch
- Pode vincular ao SNS para notificação
Glue ETL functions
- Transform data, Clean Data, Enrich Data (before doing analysis)
- Generate ETL code in Python or Scala, you can modify the code
- Can provide your own Spark or PySpark scripts
- Target can be S3, JDBC (RDS, Redshift), or in Glue Data Catalog
- Fully managed, cost effective, pay only for the resources consumed
- Jobs are run on a serverless Spark platform
- Glue Scheduler to schedule the jobs
- Glue Triggers to automate job runs based on “events”
Glue ETL: The DynamicFrame
- A DynamicFrame is a collection of DynamicRecords
- DynamicRecords are self-describing, have a schema
- Very much like a Spark DataFrame, but with more ETL stuff
- Scala and Python APIs
O que é o DynamicFrame no Glue?
O DynamicFrame é uma estrutura de dados semelhante a um DataFrame do Pandas ou Spark, mas que é projetada para trabalhar com dados sem esquema definido, ou seja, com dados semi-estruturados ou não estruturados
O que são DynamicRecords no Glue?
DynamicRecords é um recurso do AWS Glue que permite que dados sem esquema definido sejam processados e transformados em um formato tabular para facilitar a análise.
Glue ETL: The DynamicFrame (Frame Dinâmico)
- Um DynamicFrame é uma coleção de DynamicRecords
- DynamicRecords são autodescritivos, têm um esquema
- Muito parecido com um Spark DataFrame, mas com mais coisas ETL
- APIs Scala e Python
Glue ETL - Transformations
- Bundled Transformations:
- DropFields, DropNullFields – remove (null) fields
- Filter – specify a function to filter records
- Join – to enrich data
- Map - add fields, delete fields, perform external lookups
- Machine Learning Transformations:
- FindMatches ML: identify duplicate or matching records in your dataset,
even when the records do not have a common unique identifier and no fields
match exactly. - Format conversions: CSV, JSON, Avro, Parquet, ORC, XML
- Apache Spark transformations (example: K-Means)
- Can convert between Spark DataFrame and Glue DynamicFrame
Glue ETL: ResolveChoice
- Deals with ambiguities in a DynamicFrame and returns a new one
- For example, two fields with the same name.
- make_cols: creates a new column for each type
- price_double, price_string
- cast: casts all values to specified type
- make_struct: Creates a structure that contains each data type
- project: Projects every type to a given type, for example project:string
Glue ETL: Resolução de Problemas
- Lida com ambiguidades em um DynamicFrame e retorna um novo
- Por exemplo, dois campos com o mesmo nome.
- make_cols: cria uma nova coluna para cada tipo
- preço_duplo, preço_string
- cast: converte todos os valores para o tipo especificado
- make_struct: Cria uma estrutura que contém cada tipo de dados
- projeto: projeta cada tipo para um determinado tipo, por exemplo projeto: string
O que o Glue pode fazer em relação a DPU’s?
Pode provisionar DPU’s adicionais para aumentar desempenho de trabalho Spark subjacente.
Qual a especialidade do AWS Lambda?
Executar trechos de código na nuvem sem servidor.
Qual o tipo de escalabilidade do AWS Lambda?
Contínua
Como é frequentemente utilizado o AWS Lambda?
Frequentemente utilizado para processar dados conforme eles são movidos.
Quais os serviços de processamento?
Lambda, ML, Glue, Sagemaker, EMR, Data Pipeline
Como o Lambda processa dados de fragmentos no Kinesis?
De forma síncrona
Qual o limite de segurança de execuções por região?
1000 execuções simultâneas
Glue ETL - Transformations
Bundled Transformations:
- DropFields, DropNullFields – remove (null) fields
- Filter – specify a function to filter records
- Join – to enrich data
- Map - add fields, delete fields, perform external lookups
Glue ETL - Transformações
Transformações agrupadas:
- DropFields, DropNullFields – remover campos (nulos)
- Filter – especifique uma função para filtrar registros
- Join – para enriquecer os dados
- Map - adicionar campos, excluir campos, realizar pesquisas externas
Glue - Machine Learning Transformations:
- FindMatches ML: identify duplicate or matching records in your dataset,
even when the records do not have a common unique identifier and no fields
match exactly.
Glue Format conversions
CSV, JSON, Avro, Parquet, ORC, XML
Glue - Apache Spark transformations (example: K-Means)
Can convert between Spark DataFrame and Glue DynamicFrame
Glue ETL: ResolveChoice
- Deals with ambiguities in a DynamicFrame and returns a new one
- For example, two fields with the same name.
- make_cols: creates a new column for each type
- price_double, price_string
- cast: casts all values to specified type
- make_struct: Creates a structure that contains each data type
- project: Projects every type to a given type, for example project:string
Glue ETL: Modifying the Data Catalog
Adding new partitions
- Re-run the crawler, or
- Have the script use enableUpdateCatalog and partitionKeys options
Glue Updating table schema
- Re-run the crawler, or
- Use enableUpdateCatalog / updateBehavior from script
Glue - Creating new tables
enableUpdateCatalog / updateBehavior with setCatalogInfo
Glue Restrictions
- S3 only
- Json, csv, avro, parquet only
- Parquet requires special code
- Nested schemas are not supported
Develop ETL scripts using a notebook
- Then create an ETL job that runs your
script (using Spark and Glue)
Glue - Endpoint is in a VPC controlled by
security groups, connect via:
- Apache Zeppelin on your local machine
- Zeppelin notebook server on EC2 (via
Glue console) - SageMaker notebook
- Terminal window
- PyCharm professional edition
- Use Elastic IP’s to access a private
endpoint address
Running Glue jobs
- Time-based schedules (cron style)
Glue - Job bookmarks
- Persists state from the job run
- Prevents reprocessing of old data * Allows you to process new data only when re-running on a schedule
- Works with S3 sources in a variety of formats
- Works with relational databases via JDBC (if PK’s are in sequential order)
- Only handles new rows, not updated rows
Glue - CloudWatch Events
- Fire off a Lambda function or SNS notification when ETL succeeds or fails
- Invoke EC2 run, send event to Kinesis, activate a Step
Function
Glue cost model
- Billed by the second for crawler
and ETL jobs - First million objects stored and
accesses are free for the Glue
Data Catalog - Development endpoints for
developing ETL code charged by
the minute