O blog da AWS
Comparando os serviços de ETL para extração, transformação e carga de dados na AWS
Por Cristian Camilo Castellanos, Arquiteto de Soluções, WWPS LCC,
e Gabriel Gasca Torres, Arquiteto de Soluções, WWPS LCC.
A ascenção das técnicas de analytics como ferramenta para extrair valor dos dados pelas organizações gerou uma crescente demanda por serviços de extração, transformação e carga (ETL) como parte fundamental desses tipos de projetos. A integração, a transformação e a qualidade dos dados fazem parte do processamento para insights valiosos, utilizando análises, aprendizado de máquina e tecnologias de inteligência artificial, entre outras. Algumas estatísticas do setor indicam que analistas, tomadores de decisão e cientistas de dados gastam de 60% a 80% do tempo preparando dados. Ter as ferramentas e serviços ETL certos para acelerar e automatizar esse processo é fundamental para fornecer agilidade aos engenheiros e cientistas de dados para que eles possam concentrar seu tempo em tarefas de maior valor para a organização.
Nesse contexto, a AWS oferece um conjunto de serviços para implementar soluções a fim de executar o processamento de dados de acordo com diferentes necessidades e requisitos: “uma ferramenta adequada para o trabalho adequado”. Arquitetos, engenheiros e cientistas de dados precisam avaliar e decidir sobre os diferentes serviços e funcionalidades ao implementar um projeto ETL de tal forma que os serviços e recursos que atendam a uma arquitetura de analytics bem projetada sejam selecionados. Os fatores que podem orientar estas decisões variam de características da fonte de dados (estrutura, volume, velocidade de geração), tarefas de transformação (agregação, imputação, aprendizado de máquina, etc.), integração com outros serviços, provisionamento de infraestrutura, idiomas suportados, modelo de custos e conformidade regulatórias, entre outros. Essa avaliação multifatorial não é trivial, ainda mais quando as características de cada um dos serviços não são claras, tampouco suas vantagens e desvantagens em comparação com o caso de uso a ser implementado.
O objetivo deste blog é fornecer um guia para entender as principais características dos serviços ETL e casos de uso típicos, e onde cada um pode ser recomendado. É importante destacar o termo “serviços especializados” e “processamento periódico”, uma vez que outros casos de uso, como orquestração de serviços, sincronização de dados em ambientes de nuvem híbrida, migrações ou troca de dados sem operações de transformação ou sem a finalidade final de análise, estão fora do escopo de este blog. Portanto, os serviços que se aplicam a estes casos de uso não são considerados nesta comparação.
Comparação de serviços ETL na AWS
Esta seção apresenta uma visão geral de cada serviço, destacando as características que são avaliadas na comparação e exemplos de casos de uso que correspondem às características de cada serviço. Por fim, inclui uma tabela de resumo que caracteriza cada serviço em termos de dados de origem, dados de destino, funções internas, modelos, idiomas suportados, escalabilidade, modelo de processamento e custo para facilitar a comparação.
O AWS Glue é um serviço ETL serverless (sem servidor), e pago conforme o uso que automatiza as tarefas de preparação de dados para análise. O AWS Glue detecta e classifica dados automaticamente usando o AWS Glue Data Catalog, recomenda e gera código ETL para transformar seus dados de origem em esquemas de destino. Ele também executa trabalhos ETL complexos em um ambiente Apache Spark escalável e totalmente gerenciado para carregar dados em seu destino. Este serviço suporta tanto a escrita de código no Spark (Python ou Scala), ou Python Shell. Além disso, ele possui a funcionalidade de design visual da ETL com o AWS Glue Studio que inclui um conjunto de recursos internos e gera automaticamente o código correspondente.
- Criação, execução e supervisão do trabalho de ETL em grande escala.
- Criação, execução e supervisão de trabalhos de ETL para processamento de “microbatch”.
- Fluxos ETL com base em eventos.
- Transformações avançadas baseadas em ML, como deduplicação de dados.
- Gerenciando um catálogo unificado de dados.
Figura 1: Exemplo de visualização de um trabalho ETL no AWS Glue Studio.
O AWS Glue DataBrew é uma ferramenta de preparação de dados visuais que facilita para que analistas e cientistas de dados prepararem dados com uma interface visual interativa de “arrastar e soltar” sem a necessidade de escrever código. O AWS Glue Databrew tem mais de 250 transformações integradas com as quais terabytes e até mesmo petabytes de dados podem ser facilmente visualizados, limpos e normalizados diretamente do data lake, data warehouses, e bancos de dados. Este serviço se encaixa principalmente em processos ETL envolvendo análise de qualidade de dados, linhagem de dados, aplicação de técnicas avançadas de processamento de texto usando uma interface visual que não requer escrita de código:
- Perfil de dados e análise visual sobre a qualidade dos dados
- Limpeza visual, filtragem, normalização, imputação de dados.
- Mapeamento de linhagem de dados.
- Transformação de texto usando técnicas de processamento de linguagem natural (NLP).
Figura 2: Exemplo de visualização de um perfil de dados no AWS Glue DataBrew.
Figura 3: Exemplo de visualização da linhagem de dados no AWS Glue DataBrew.
O Amazon ElasticMapReduce (Amazon EMR) é a plataforma de big data para processar grandes volumes de dados usando ferramentas de código aberto, como Apache Spark, Apache Hive, Apache HBase, Apache Flink, Apache Hudi e Presto. O Amazon EMR facilita a instalação, a operação e a escala de ambientes de big data automatizando tarefas demoradas, como provisionamento de capacidade e ajuste de cluster. O Amazon EMR pode ser usado para executar cargas de trabalho de transformação de dados (ETL) de forma rápida e econômica, como classificação, adição e união de grandes conjuntos de dados. O Amazon EMR fornece acesso direto ao seu ambiente Hadoop, oferecendo acesso de mais baixo nível e maior flexibilidade no uso de ferramentas do ecossistema Hadoop, ao contrário do AWS Glue, que fornece um ambiente Apache Spark gerenciado. O Amazon EMR fornece várias maneiras de obter dados em um cluster. A maneira mais comum é fazer upload de dados para o Amazon S3, e usar os recursos internos do Amazon EMRFS para ler e processar os dados em seu cluster. Também é possível usar estruturas para interagir com dados armazenados no Amazon S3, Hadoop HDFS, e RDBMS.
O Apache Hadoop permite que você execute programas MapReduce para processar cargas de trabalho com estruturas que dividem trabalhos em partes menores que podem ser distribuídas entre nós em seu cluster do Amazon EMR.
O Apache Hive é um pacote de análise e armazenamento de dados de código aberto executado no Hadoop usando o Hive QL, uma linguagem baseada em SQL que permite aos usuários estruturar, resumir e consultar dados. O Amazon EMR fez inúmeras melhorias no Hive, incluindo integração direta com o Amazon DynamoDB e o Amazon S3.
O Apache Pig é uma biblioteca Apache de código aberto que é executada sobre o Hadoop, fornecendo uma linguagem de script que você pode usar para transformar grandes conjuntos de dados sem precisar escrever código em uma linguagem de computador complexa como Java.
O Apache Spark é uma estrutura de processamento distribuída e um modelo de programação que ajuda você a fazer aprendizado de máquina, processamento de streaming ou análise de gráficos usando clusters do Amazon EMR.
O Apache Flink é um mecanismo de fluxo de dados de streaming que você pode usar para executar o processamento de streaming em tempo real, em fontes de dados de alto desempenho.
Os casos de uso que melhor se encaixam neste serviço são:
- Provisionamento de clusters de big data para implantar tarefas ETL em ambientes como Apache Hadoop, Hive, Pig, Spark e
- Migração de código ETL implementado no Apache Hadoop, Spark, Pig e Flink para um ambiente de cluster gerenciado.
Figura 4: Integrações de trabalho ETL com o Apache Spark no EMR. Adaptado de https://aws.amazon.com/blogs/big-data/using-spark-sql-for-etl/
O Amazon SageMaker Data Wrangler (Data Wrangler) é um recurso do Amazon SageMaker Studio que fornece uma solução abrangente para importar, preparar, transformar, caracterizar e analisar dados. Você pode integrar um fluxo de dados do Data Wrangler em fluxos de trabalho de aprendizado de máquina (ML), para simplificar e otimizar o pré-processamento de dados e a engenharia de recursos usando pouca ou nenhuma codificação. Você também pode adicionar seus próprios scripts e transformações Python, para personalizar um fluxo de trabalho de preparação de dados do Data Wrangler. Este serviço é recomendado quando você precisa implementar transformações, análises ou extração de recursos como parte de um fluxo em batch de aprendizado de máquina que não requer escrita de código.
- Criação de perfil e análise visual da qualidade dos dados antes de uma tarefa de ML.
- Preparação de dados para processos de ML.
- Extração de recursos para tarefas de ML.
Figura 5: Exemplo de visualização de um fluxo de dados no Amazon SageMaker Data Wrangler.
O Amazon AppFlow é um serviço de integração totalmente gerenciado que permite, com apenas alguns cliques e com segurança, transmitir dados entre aplicativos de software como serviço (SaaS), como Salesforce, Marketo, Slack e ServiceNow, entre outros e serviços da AWS, como Amazon S3 e Amazon Redshift. Com o AppFlow, você pode executar fluxos de dados em praticamente qualquer escala e na frequência escolhida, programaticamente, em resposta a eventos de negócios ou sob demanda. Você pode configurar recursos de transformação de dados, como filtragem e validação, para gerar dados avançados e prontos para uso como parte do fluxo, sem etapas adicionais e com frequência de minutos, horas ou dias. Ele oferece menos opções de transformação em comparação com outros serviços, mas é ideal se você precisar integrar serviços SaaS compatíveis sem a necessidade de codificação. Os casos de uso que melhor se encaixam neste serviço são:
- Armazenamento ou sincronização de dados operacionais de serviços SaaS externos.
- Fluxos de trabalho e análise baseada em eventos gerados por serviços SaaS externos.
- Enriquecimento de dados gerados por serviços SaaS externos.
- Troca de dados orientada a APIs entre aplicativos SaaS e serviços da AWS.
Figura 6: Exemplo de um mapeamento de dados do Slack para o S3 no Amazon AppFlow.
O Amazon Kinesis Analytics oferece a maneira mais fácil de transformar e analisar dados de streaming em tempo real com base no Apache Flink. O Amazon Kinesis Data Analytics cuida de tudo o que você precisa para executar seus aplicativos de streaming de forma contínua e automática para se adequar ao volume e ao desempenho de seus dados de entrada. Este serviço fornece suporte para bibliotecas Apache Flink de código aberto, Apache Beam, AWS SDKs especializados para diferentes casos de uso, incluindo streaming ETL e análise em tempo real. Casos de uso típicos incluem:
- Processos ETL simples em streaming de dados.
- Consultas de streaming em tempo real.
- Monitoramento em tempo real.
- Processamento de eventos com estado.
Figura 7: Exemplo de definição de um fluxo de dados usando SQL no Amazon Kinesis Analytics.
O AWS IoT Analytics é um serviço totalmente gerenciado, que facilita a execução e implementação de análises sofisticadas de enormes volumes de dados de dispositivos IoT (Internet das Coisas), que incluem marcações temporais. O AWS IoT Analytics automatiza todas as etapas para analisar, filtrar, transformar e enriquecer dados de IoT usando atividades básicas de transformação, incluindo operações de janelas de tempo, para salvá-los em um data warehouse de série temporal para análise. Você pode configurar o serviço para coletar somente os dados necessários de seus dispositivos, aplicar transformações matemáticas aos dados para processamento e enriquecê-lo com metadados específicos do dispositivo. Este serviço tem como objetivo principal analisar dados de dispositivos IoT que exigem transformação, integração e análise de telemetria totalmente gerenciada quase em tempo real, com resolução de minutos usando SQL e funções predefinidas. Os casos de uso típicos para este serviço incluem:
- Entender as características de desempenho a longo prazo do dispositivo.
- Relatório de negócios e análise ad hoc de dados de IoT.
- Manutenção preditiva da frota de dispositivos IoT.
Figura 8: Exemplo de definição de atividades de transformação em um pipeline do AWS IoT Analytics.
Serviço |
Dados de origem | Dados de destino | Funções internas | Modelos | Linguagens | Forma de escalabilidade | Modelo de Processamento | Custo |
Amazon Aurora, Amazon RDS, Amazon Redshift, DynamoDB, Amazon S3, MySQL, Oracle, Microsoft SQL Server e PostgreSQL no Amazon EC2. Amazon MSK Streaming, Amazon Kinesis Data Streams e Apache Kafka. | JSON, CSV, PARQUET, ORC, TXT, RDS, RedShift | Descubra esquemas, impute, adicione, integre, limpe, normalize, transforme | Sim | Código no Scala, Python ou Interface visual |
Sem servidor (Serverless) | Batch, Streaming |
||
Amazon S3, AWS Glue Data Catalog, CSV, TSV, JSON, Apache Parquet e planilhas Excel. | Arquivos CSV, JSON, Apache Parquet, Apache Avro, Apache ORC e XML. | 250+ transformações integradas para criação de perfil, limpeza, normalização, mapeamento de linhagem de dados, automação e deduplicação | Não | Interface visual | Sem servidor (Serverless) | Batch |
Sessões interativas e poder de processamento usados por unidade de tempo |
|
Amazon S3, Amazon Athena, Amazon Redshift, AWS Lake Formation e Amazon SageMaker | Sagemaker | 300+ transformações integradas para importar transformadas, analisar e exportar o fluxo de dados. | Sim | Visual, você pode adicionar seus próprios scripts e transformações Python e exportar o fluxo Data Wrangler para o código Python |
Batch |
|||
Fontes de dados baseadas em API, Amazon Redshift, Amazon EventBridge, Amazon Honeycode, Amazon Lookout para métricas, Amplitude, Datadog, Dynatrace, Google Analytics, Infor Nexus, Marketo, Salesforce, Salesforce Pardot, ServiceNow, Singular, Slack, Snowflake, Trend Micro, Upsolver, Veeva, Zendesk. |
Amazon S3, Amazon Redshift, Salesforce e Snowflake. |
Transformações básicas de dados, como filtragem e validação, para gerar dados avançados e prontos para uso como parte do fluxo. |
Não | Interface Visual | Sem servidor (Serverless) | Batch, Microbatch |
||
Amazon S3, Hadoop, HDFS, e RDBMS.
|
Amazon S3, Hadoop, HDFS, e RDBMS. |
Transformação e consulta de dados. |
Não | Código Java |
Batch |
Capacidade de processamento provisionada por unidade de tempo |
||
Não |
HiveQL |
Batch |
||||||
Amazon S3, Hadoop, HDFS, e RDBMS.
|
Amazon S3, Hadoop, HDFS, e RDBMS. | Transformações básicas de dados, como filtragem, imputação, integração e validação. | Não | Código Pig Latin |
Batch |
Capacidade de processamento provisionada por unidade de tempo |
||
Amazon S3, Hadoop, HDFS, RDBMS, Amazon Kinesis, Apache Kafka. | Amazon S3, Hadoop, HDFS, RDBMS, Amazon Kinesis, Apache Kafka. | Transformações básicas de dados, como filtragem, adição, imputação, integração e validação e janelas de tempo | Não | Código Java, Scala, Python, R |
Batch, Microbatch |
|||
Amazon S3, Hadoop, HDFS, Amazon Kinesis, Apache Kafka, Cassandra, Elasticsearch, Twitter Streaming API | Amazon S3, Hadoop, HDFS, Amazon Kinesis, Apache Kafka, Cassandra, Elasticsearch | Transformações básicas de dados, como filtragem, adição, imputação, integração, validação e janelas de tempo | Não | Código Java, Scala, Python |
Streaming |
|||
Amazon Kinesis Data Streams, Amazon Kinesis Firehose, você pode usar as bibliotecas do Amazon Kinesis Data Analytics para se integrar a outros serviços. |
Kinesis Data Stream, Kinesis Firehose (Amazon S3, Amazon Redshift, Amazon Elasticsearch Service), AWS Lambda | Funções SQL integradas para filtrar, adicionar, transformar dados, aplicar janelas de tempo, funções para análise estatística e ML. | Sim, modelos SQL | SQL, Código Java, Scala (Apache Flink) | Sem servidor (Serverless) | Streaming |
||
MQTT Topic, AWS IoT Core | AWS IoT Events, Amazon S3, armazenamento de séries temporais, Amazon QuickSight | Funções básicas para filtrar, transformar, integrar, limpar, adicionar, reprocessar e usar janela de tempo diferencial | Não | SQL e Assistente com atividades de transformação integradas | Sem servidor (Serverless) | Microbatch |
Selecionando o serviço ETL de acordo com o caso de uso
Depois de esclarecermos as características dos diferentes serviços ETL e os requisitos do nosso projeto ETL, podemos começar a avaliar e selecionar o serviço que melhor se adapta às nossas necessidades. Para facilitar o processo de seleção, propomos o guia apresentado na “Figura 8” como uma árvore de decisão que nos permite avaliar as condições do nosso ETL passo a passo, até selecionarmos o serviço recomendado. A primeira condição é validar se, do ponto de vista do modelo operacional ou de custos, é procurado um serviço serverless (sem servidor), o que reduz a carga operacional da manutenção da infraestrutura e usa um modelo de custos por serviço em vez de por infraestrutura provisionada.
Outro recurso importante é se o processo ETL requer streaming, ou processamento em batch e se é necessário em execução em tempo real, pois isso determina em grande parte a seleção do serviço. Finalmente, outros elementos como o tipo de funções internas, a integração com aplicativos SaaS, ou dispositivos IoT permitem refinar a escolha do serviço ETL. O suporte para dados de origem e destino também pode limitar a seleção do serviço, para o qual a tabela acima fornece suporte de dados predefinido por serviço, que também pode ser estendido a partir da integração ou construção de conectores adicionais.
* Se você precisar de recursos avançados já integrados, como criação de perfil de dados, linhagem de dados, eliminação de duplicação, análise de viés etc.
** Se o processo ETL faz parte de um fluxo de aprendizado de máquina.
Figura 9: Guia para selecionar um serviço ETL.
Conclusões
Quando estamos criando uma arquitetura de dados na AWS, gastamos muito tempo processando informações, mas também é fundamental pensar sobre os requisitos que temos e quais serviços da AWS são mais adequados para cada tarefa. Isso nos ajuda a reduzir o tempo e o esforço que investimos na implementação deste processamento e podemos gastar mais tempo agregando valor ao negócio e, portanto, à missão da organização. Dependendo do caso de uso e dos atributos de qualidade que você busca como arquiteto, alguns serviços são mais adequados para processamento em tempo real ou em batch, podem ou não exigir gerenciamento de servidores ou podem estar mais focados em algumas verticais de tecnologia, como IoT, integração de aplicativos ou aprendizado de máquina. Portanto, é fundamental selecionar a ferramenta certa para o trabalho certo, e é aí que este blog oferece sua principal contribuição.
Neste blog, fornecemos elementos básicos para analisar quais serviços podem ser mais adequados ao seu caso de uso, levando em consideração dimensões diferentes e do ponto de vista do gerenciamento de TI, usando serviços gerenciados ou sem servidor, onde a AWS cuida de mais elementos, como segurança, escalabilidade e disponibilidade, entre outros, para que a carga operacional indiferenciada possa ser reduzida.
Sobre os autores
Cristian Castellanos é arquiteto de soluções da Amazon Web Services para o setor público. Cristian ajudou vários NPOs, instituições educacionais e governo na adoção de novas tecnologias e na implementação de soluções de análise.
Gabriel Gasca Torres é arquiteto de soluções na AWS no México.
Tradução
Ernesto dos Santos, Arquiteto de Soluções na AWS. Atua auxiliando e apoiando clientes do setor público em sua jornada para a nuvem AWS, trabalhando em projetos que envolvam arquiteturas distribuídas e escaláveis. Tem grande interesse na área de segurança da informação, infraestrutura, networking e serverless.
Revisão Técnica
Gabriel Paredes é arquiteto de soluções na Amazon Web Services para o setor público. Gabriel ajuda várias instituições educacionais na América Latina na adoção tecnológica e na melhoria de seus serviços estudantis.