Geral

P: O que é o Amazon Kinesis Data Analytics?
O Amazon Kinesis Data Analytics é a forma mais fácil de analisar dados de streaming, obter insights práticos e responder em tempo real às necessidades da empresa e dos clientes. O Amazon Kinesis Data Analytics reduz a complexidade de criar, gerenciar e integrar aplicações de streaming com outros serviços da AWS. Você pode criar rapidamente consultas SQL e aplicações Apache Flink avançados em uma linguagem compatível, como Java ou Scala usando modelos e operadores incorporados para funções de processamento comuns que permitem organizar, transformar, agregar e analisar dados em qualquer escala.
 
O Amazon Kinesis Data Analytics se encarrega de tudo o que é necessário para executar continuamente as aplicações em tempo real e dimensionar automaticamente para atender ao volume e à taxa de transferência dos dados recebidos. Com o Amazon Kinesis Data Analytics, você só paga pelos recursos que os seus aplicativos de streaming consumirem. Não há taxa mínima ou custo de configuração.
 
P: O que é processamento de fluxo em tempo real e por que ele é necessário?
Estamos recebendo uma enxurrada de dados devido ao crescimento explosivo das fontes de dados em tempo real. Sejam dados de log chegando de aplicativos móveis e da web, dados de compras de sites de e-commerce ou dados de sensores de dispositivos da IoT, os dados disponibilizam informações que podem ajudar empresas a aprenderem sobre o que os seus clientes, seu departamento e a sua empresa estão fazendo no momento. Ao ter visibilidade desses dados à medida que chegam, você pode monitorar seus negócios em tempo real e aproveitar rapidamente novas oportunidades de negócios. Por exemplo, fazer ofertas promocionais para os clientes com base na localização que eles podem estar em um momento específico ou monitorar o sentimento social e mudar as atitudes do cliente, a fim de identificar e atuar em novas oportunidades.
 
Para aproveitar essas oportunidades, você precisa de um conjunto de ferramentas de análise para coletar e analisar dados de streaming em tempo real diferente daquele que tem sido usado tradicionalmente para dados estáticos armazenados. Com a análise tradicional, você reúne informações, as armazena em um banco de dados e as analisa horas, dias ou semanas depois. A análise de dados em tempo real exige abordagem, ferramentas e serviços diferentes. Em vez de executar consultas de banco de dados sobre dados armazenados, os serviços de análise de streaming processam os dados continuamente antes que eles sejam armazenados. Os dados de streaming fluem em um ritmo incrível que pode aumentar ou diminuir o tempo todo. Os serviços de análise de streaming precisam processar esses dados quando eles são recebidos, geralmente em velocidades de milhões de eventos por hora.
 
P: O que posso fazer com o Kinesis Data Analytics?
Você pode usar o Kinesis Data Analytics em diversos casos de uso para processar dados continuamente e obter insights em segundos ou minutos, em vez de esperar dias ou até mesmo semanas. O Kinesis Data Analytics permite que você crie rapidamente aplicativos de processamento de fluxos completos para análise de logs, análise de clickstream, Internet das Coisas (IoT), tecnologia de anúncios, jogos e muito mais. Os três casos de uso mais comuns são o streaming extract, transform and load (ETL –extração, transformação e carregamento), a geração contínua de métricas e a análise responsiva.
 
Streaming ETL
Os aplicativos de streaming ETL permitem que você limpe, aprimore, organize e transforme dados brutos antes de carregar seu data lake ou data warehouse em tempo real, reduzindo ou eliminando as etapas de ETL em lote. Estes aplicativos podem armazenar pequenos registros em arquivos maiores antes da entrega, além de realizar associações sofisticadas em streams e tabelas. Por exemplo, você pode criar um aplicativo que leia continuamente dados do sensor de IoT armazenados no Amazon Managed Streaming for Apache Kafka (Amazon MSK), organizar os dados por tipo de sensor, remover dados duplicados, normalizar os dados por esquema especificado e transmitir os dados ao Amazon S3.
 
Geração contínua de métricas
Os aplicativos de geração contínua de métricas permite que você monitore e entenda como está a tendência dos seus dados com o passar do tempo. Suas aplicações podem agregar dados de streaming em informações críticas e integrá-los com facilidade a bancos de dados de relatórios e serviços de monitoramento, a fim de atender suas aplicações e usuários em tempo real. Com o Kinesis Data Analytics, você pode utilizar o código SQL ou Apache Flink para continuamente gerar análises de série temporal durante intervalos de tempo. Por exemplo, você pode criar um placar ao vivo para um jogo para dispositivos móveis computando os melhores jogadores a cada minuto e, em seguida, enviando-os para o Amazon DynamoDB. Ou você pode rastrear o tráfego para o seu site ao calcular o número de visitantes únicos do site a cada cinco minutos e enviar os resultados processados para o Amazon Redshift.
 
Análise responsiva em tempo real
Os aplicativos de análise responsiva em tempo real enviam alarmes ou notificações em tempo real quando determinadas métricas atingem limites predefinidos ou, em casos mais avançados, quando o aplicativo detecta anomalias usando algoritmos de machine aearning. Esses aplicativos permitem que você responda imediatamente às alterações em seus negócios em tempo real, como prever o abandono do usuário em aplicativos móveis e identificar sistemas degradados. Por exemplo, um aplicativo pode calcular a disponibilidade ou a taxa de sucesso de uma API do cliente com o passar do tempo e, então, enviar os resultados para o Amazon CloudWatch. Você pode criar outra aplicação para procurar por eventos que atendam a determinados critérios e notificar automaticamente os clientes certos usando o Amazon Kinesis Data Streams e o Amazon Simple Notification Service (SNS).
 
P: Como faço para começar a usar aplicações Apache Flink para o Kinesis Data Analytics?
Faça login no console do Amazon Kinesis Data Analytics e crie uma nova aplicação de processamento de stream. Você também pode usar a AWS CLI e os AWS SDKs. Depois de criar uma aplicação, vá para o ambiente de desenvolvimento integrado favorito, conecte-se à AWS e instale as bibliotecas Apache Flink de código aberto e AWS SDKs em seu idioma preferido. O Apache Flink é uma estrutura e um mecanismo de código aberto para o processamento de streams de dados e AWS SDKs. As bibliotecas extensíveis incluem mais de 25 operadores de processamento de streams predefinidos, como janela e agregado, e integrações com serviços da AWS, como o Amazon MSK, Amazon Kinesis Data Streams e Amazon Kinesis Data Firehose. Depois de desenvolver o código, você faz o upload no Amazon Kinesis Data Analytics e o serviço administra tudo o que é necessário para executar continuamente as aplicações em tempo real, incluindo dimensionar automaticamente para que corresponda ao volume e à taxa de transferência dos dados recebidos.
 
P: Como faço para começar a usar aplicações Apache Beam para o Kinesis Data Analytics?
Usar o Apache Beam para criar sua aplicação Kinesis Data Analytics é muito semelhante a começar a usar o Apache Flink. Siga as instruções na pergunta acima e certifique-se de instalar todos os componentes necessários para que as aplicações sejam executadas no Apache Beam, de acordo com as instruções no Guia do Desenvolvedor. Observe que o Kinesis Data Analytics oferece suporte a Java SDKs somente quando estão em execução no Apache Beam.
 
P: Como faço para começar a usar aplicativos SQL para o Kinesis Data Analytics?
Faça login no console do Amazon Kinesis Data Analytics e crie uma nova aplicação de processamento de stream. Você também pode usar a AWS CLI e os AWS SDKs. Você pode criar um aplicativo completo em três etapas simples: 1) configure os dados de streaming de entrada, 2) escreva consultas SQL e 3) indique onde deseja que os resultados sejam carregados. O Kinesis Data Analytics reconhece os formatos de dados padrão, como JSON, CSV e TSV, e cria automaticamente um esquema de linha de base. Você pode refinar esse schema ou, se seus dados não forem estruturados, definir um novo usando nosso editor de schema intuitivo. Depois, o serviço aplica o schema para o stream de entrada e faz com que ele se pareça com uma tabela SQL continuamente atualizada para que você possa escrever nele consultas SQL padrão. Use nosso editor SQL para criar suas consultas.
 
O editor SQL vem completo, inclusive com a verificação e o teste de sintaxe dos dados em tempo real. Também oferecemos modelos que disponibilizam o código SQL para uma grande variedade de opções, de um simples filtro de stream até detecção de anomalias e análises top-K avançadas. O Kinesis Data Analytics administra o provisionamento e a escalabilidade de toda a infraestrutura de maneira elástica para processar qualquer throughput de dados. Não é necessário planejar, provisionar ou gerenciar a infraestrutura.
 
P: Quais são os limites do Kinesis Data Analytics?
O Kinesis Data Analytics escala de maneira elástica o aplicativo para acomodar a taxa de transferência de dados do fluxo de origem e da complexidade da consulta para a maioria dos cenários. Para obter informações detalhadas sobre limites de serviço, consulte os limites no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL. Para obter informações detalhadas sobre os limites de serviço para aplicações em Apache Flink, visite a seção Limites no Guia do desenvolvedor do Amazon Kinesis Data Analytics para Apache Flink.

Principais conceitos

P: O que é um aplicativo do Kinesis Data Analytics?
Um aplicativo é a entidade do Kinesis Data Analytics com a qual você trabalha. As aplicações do Kinesis Data Analytics leem e processam continuamente dados de streaming em tempo real. Grave o código da aplicação usando SQL ou uma linguagem compatível com Apache Flink para processar dados de streaming de entrada e gerar a saída. Depois, o Kinesis Data Analytics grava a saída em um destino configurado.
 
Cada aplicativo consiste em três principais componentes:
 
Entrada – A origem de streaming do seu aplicativo. Na configuração de entrada, você mapeia a origem de streaming para fluxos de dados no aplicativo. Os dados fluem de suas fontes de dados para seus fluxos de dados no aplicativo. Você processa dados desses streams de dados na aplicação usando o código da aplicação, enviando dados processados para destinos ou streams de dados subsequentes na aplicação. Você adiciona entradas dentro do código da aplicação para aplicações Apache Flink e por meio da API para aplicações SQL.
 
Código da aplicação – uma série de operadores Apache Flink ou instruções SQL que processam entrada e produzem saída. Em sua forma mais simples, o código da aplicação pode ser um único operador Apache Flink ou uma instrução SQL que lê de um stream de dados na aplicação associada a uma fonte de streaming e grava em um stream de dados na aplicação associada a uma saída. Você pode gravar o código Apache Flink nas linguagens suportadas ou código SQL que divide o stream de dados inicial na aplicação em vários streams e aplica lógica adicional a esses streams separados.
 
Saída – você pode criar um ou mais streams na aplicação para armazenar resultados intermediários. Como opção, você pode configurar uma saída da aplicação para que ela mantenha dados de streams na aplicação específica para um destino externo. Você adiciona essas saídas dentro do código da aplicação para aplicações Apache Flink ou API para aplicações SQL.
 
P: O que é um stream de dados na aplicação?
Um fluxo de dados no aplicativo é uma entidade que armazena dados continuamente em seu aplicativo para que você execute o processamento. Suas aplicações gravam e leem continuamente desses streams de dados na aplicação. Para aplicações Apache Flink, você interage com o stream na aplicação ao processar os dados por meio de operadores de stream. Os operadores transformam um ou mais streams de dados em um novo stream de dados. Para aplicativos SQL, você interage com um fluxo no aplicativo do mesmo modo como faria com uma tabela SQL ao utilizar instruções SQL. Você aplica as instruções SQL a um ou mais fluxos de dados e insere os resultados em um novo fluxo de dados.
 
P: Qual código de aplicação é compatível?
Para aplicações Apache Flink, o Kinesis Data Analytics é compatível com aplicações criadas usando as bibliotecas de código aberto do Apache Flink e os AWS SDKs. Para aplicações Apache Beam, o Kinesis Data Analytics é compatível com aplicações criadas usando as bibliotecas de código aberto do Apache Flink e os AWS SDKs que criam com Java. Para aplicações SQL, o Kinesis Data Analytics é compatível com o SQL ANSI com algumas extensões para o SQL padrão para facilitar o trabalho com dados de streaming.

Gerenciamento de aplicativos

P: Como posso monitorar as operações e a performance de aplicativos do Kinesis Data Analytics?
A AWS disponibiliza várias ferramentas que você pode usar para monitorar aplicativos do Kinesis Data Analytics. Você pode configurar algumas dessas ferramentas para que façam o monitoramento para você. Para obter mais informações sobre como monitorar sua aplicação, consulte:
 
P: Como posso gerenciar e controlar o acesso a aplicativos do Kinesis Data Analytics?
O Kinesis Data Analytics precisa de permissões para ler os registros de fontes de dados de streaming especificadas nos aplicativos. O Kinesis Data Analytics também precisa de permissões para gravar a saída dos aplicativos nos destinos especificados na configuração de saída desses aplicativos. Você pode conceder essas permissões criando funções do IAM que o Kinesis Data Analytics pode assumir. As permissões que você concede para essa função determinam o que o Kinesis Data Analytics pode fazer quando o serviço assume a função. Para obter mais informações, consulte:
 
P: Como o Kinesis Data Analytics escala um aplicativo?
O Kinesis Data Analytics escala o aplicativo de maneira elástica para acomodar o throughput de dados do stream de origem e a complexidade das consultas para a maioria dos cenários. O Kinesis Data Analytics provisiona capacidade na forma de unidades de processamento do Amazon Kinesis (KPU). Uma KPU fornece 1 vCPU e 4 GB de memória.
 
Para aplicações Apache Flink, o Kinesis Data Analytics atribui 50 GB de armazenamento de aplicações em execução por KPU que sua aplicação usa para pontos de verificação e está disponível para uso por meio de um disco temporário. Um ponto de verificação é um backup atualizado de uma aplicação em execução que é usada para recuperação imediata após uma interrupção da aplicação. Você também pode controlar a execução paralela das tarefas da aplicação Kinesis Data Analytics para Apache Flink (como ler de uma fonte ou executar um operador) usando os parâmetros Parallelism e ParallelismPerKPU na API. O paralelismo define o número de instâncias simultâneas de uma tarefa. Todos os operadores, fontes e coletores executam com um paralelismo definido no valor de 1, por padrão. O paralelismo por KPU define a quantidade do número de tarefas paralelas que podem ser agendadas por Kinesis Processing Unit (KPU) da sua aplicação, definido no valor de 1, por padrão. Para obter mais informações, consulte Escalabilidade no Guia do desenvolvedor do Amazon Kinesis Data Analytics para Apache Flink.
 
Para aplicações SQL, cada origem de streaming é mapeada para um stream na aplicação correspondente. Embora isso não seja exigido para muitos clientes, é possível usar as KPUs com maior eficiência aumentando o número de fluxos no aplicativo para os quais a origem é mapeada por meio da especificação do parâmetro de paralelismo de entrada. O Kinesis Data Analytics atribui igualmente partições de fonte de dados de streaming, como fragmentos de um fluxo de dados do Amazon Kinesis, para o número de fluxos no aplicativo que você especificou. Por exemplo, se você tem um fluxo de dados do Amazon Kinesis com 10 estilhaços como uma fonte de dados de streaming e especifica um paralelismo de entrada de dois, o Kinesis Data Analytics atribui cinco fragmentos do Amazon Kinesis para dois fluxos no aplicativo, chamados de “SOURCE_SQL_STREAM_001” e “SOURCE_SQL_STREAM_002”. Para obter mais informações, consulte Configuração de entrada do aplicativo no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL.
 
P: Quais são as melhores práticas associadas à criação e ao gerenciamento de aplicações do Kinesis Data Analytics?
Para obter informações sobre as melhores práticas para Apache Flink, consulte a seção de Melhores práticas do Guia do desenvolvedor do Amazon Kinesis Data Analytics para Apache Flink. A seção abrange as melhores práticas para lidar com tolerância a falhas, performance, registro em log, codificação e mais.
 
Para obter informações sobre as melhores práticas de SQL, consulte a seção de Melhores práticas do Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL. A seção informa como gerenciar aplicações, definir o esquema de entradas, conectar a saídas e criar código da aplicação.
 
P: Posso ter acesso a recursos subjacentes de uma Amazon VPC com uma aplicação Kinesis Data Analytics para Apache Flink?
Sim. Você pode acessar os recursos subjacentes de uma Amazon VPC. Você pode aprender a configurar sua aplicação para acesso à VPC na seção sobre como Usar uma Amazon VPC do Guia do desenvolvedor do Amazon Kinesis Data Analytics.
 
P: Uma única aplicação Java do Kinesis Data Analytics pode ter acesso a várias VPCs?
Se várias sub-redes forem especificadas, todas elas deverão estar na mesma VPC. Você pode se conectar a outras VPCs usando o emparelhamento de VPCs.
 
P: Uma aplicação Apache Flink do Kinesis Data Analytics conectado a uma VPC também pode acessar a Internet e endpoints de produto da AWS?
O Kinesis Data Analytics para aplicações Apache Flink configurados para acessar recursos em determinada VPC não terão acesso à Internet, como parte da configuração padrão. Você pode aprender a configurar o acesso à Internet para a sua aplicação na seção Internet and Service Access do Guia do desenvolvedor do Amazon Kinesis Data Analytics.  

Definição de preço e faturamento

P: Quanto custa o Kinesis Data Analytics?
Com o Amazon Kinesis Data Analytics, você paga somente pelo que usar. Não há recursos para provisionar ou custos iniciais associados ao Amazon Kinesis Data Analytics.
 
É cobrada uma taxa por hora com base no número de unidades de processamento do Amazon Kinesis (ou KPUs) usado para executar seu aplicativo de streaming. Uma KPU única é uma unidade de capacidade de processamento de fluxos composta por um vCPU e 4 GB de memória. O Amazon Kinesis Data Analytics dimensiona automaticamente o número de KPUs necessárias para sua aplicação de processamento de streams, já que as demandas de memória e de computação variam em resposta à complexidade de processamento e à taxa de transferência de dados de streaming processados.
 
Para aplicações do Apache Flink e Apache Beam, você é cobrado por uma KPU única adicional por aplicação para orquestração de aplicações. As aplicações do Apache Flink e Apache Beam também são cobradas pelo armazenamento de aplicações em execução e pelos backups de aplicações duráveis. O armazenamento de aplicações em execução é usado pelos recursos de processamento stateful no Amazon Kinesis Data Analytics e é cobrado por GB/mês. Os backups de aplicações duráveis são opcionais, cobrados por GB/mês e oferecem um ponto de recuperação point-in-time para aplicações.
 
Para obter mais informações sobre a definição de preço, consulte a página de definição de preço do Amazon Kinesis Data Analytics.
 
P: O Kinesis Data Analytics está disponível no nível gratuito da AWS?
Não. No momento, o Kinesis Data Analytics não está disponível no nível gratuito da AWS. O nível gratuito da AWS é um programa que oferece testes gratuito para um grupo de serviços da AWS.
 
P: Serei cobrado por uma aplicação do Kinesis Data Analytics em execução que não esteja processando nenhum dado de origem?
Para aplicações em Apache Flink e Apache Beam, será cobrado um mínimo de duas KPUs e o armazenamento de aplicação em execução de 50 GB, caso uma aplicação do Kinesis Data Analytics esteja em execução. Para aplicações SQL, será cobrado um mínimo de uma KPU, caso uma aplicação do Kinesis Data Analytics esteja em execução.
 
P: Além dos custos do Kinesis Data Analytics, existem outros custos que possam incorrer?
O Kinesis Data Analytics é uma solução de processamento de fluxos gerenciada, que independe da origem de streaming de onde lê dados e dos destinos nos quais grava os dados processados. A cobrança será realizada de forma independente pelos serviços de leitura e gravação no sua aplicação.
P: O que é o Apache Flink?
Apache Flink é uma estrutura e mecanismo de código aberto para processamento de dados em fluxo e em lote. Ele facilita a criação de aplicativos de streaming, porque fornece operadores robustos e resolve muito bem os principais problemas de streaming, como o processamento duplicado. O Apache Flink fornece distribuição de dados, comunicação e tolerância a falhas para computação distribuída em fluxos de dados.
 
P: Como desenvolvo aplicativos?
Você pode começar baixando as bibliotecas de código aberto que incluem o SDK da AWS, o Apache Flink e os conectores dos serviços da AWS. Você pode obter instruções sobre como fazer download das bibliotecas e criar sua primeira aplicação no Guia do desenvolvedor do Amazon Kinesis Data Analytics para Apache Flink.
 
P: Qual é a aparência do código da aplicação?
Você escreve o código do Apache Flink usando streams de dados e operadores de stream. Os streams de dados da aplicação são a estrutura de dados que são executadas durante o processamento em relação ao uso do seu código. Os dados fluem continuamente das fontes para os streams de dados da aplicação. Um ou mais operadores de fluxo são usados para definir seu processamento nos fluxos de dados do aplicativo, incluindo transformação, partição, agregação, associação e janelas. Os fluxos de dados e os operadores podem ser reunidos em cadeias seriais e paralelas. Um pequeno exemplo usando um pseudocódigo é mostrado abaixo.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
P: Como faço para usar os operadores?
Os operadores pegam um fluxo de dados do aplicativo como entrada e enviam os dados processados para um fluxo de dados do aplicativo como saída. Os operadores podem ser reunidos para criar aplicativos com várias etapas e não exigem conhecimento avançado de sistemas distribuídos para implementação e operação.
 
P: Quais operadores são compatíveis?
O Kinesis Data Analytics para Apache Flink inclui mais de 25 operadores do Apache Flink que podem ser usados para resolver uma grande variedade de casos de uso, incluindo Map, KeyBy, agregações, Window Join e Window. O Maps permite executar um processamento arbitrário, pegando um elemento de um stream de dados de entrada e produzindo outro elemento. O KeyBy organiza logicamente os dados usando uma chave específica, permitindo que os pontos de dados semelhantes sejam processados juntos. As agregações executam o processamento em várias chaves, como sum, min e max. O Window Join junta dois fluxos de dados em uma determinada chave e janela. O operador Window agrupa dados usando uma chave e uma operação normalmente baseada em tempo, como contar o número de itens exclusivos em um período de cinco minutos.
 
É possível criar operadores personalizados se eles não atenderem às suas necessidades. Você pode encontrar mais exemplos na seção Operadores do Guia do desenvolvedor do Amazon Kinesis Data Analytics para Apache Flink. Você pode encontrar uma lista completa dos operadores do Apache Flink na seção Operadores da documentação do Apache Flink.
 
P: Quais integrações são compatíveis com uma aplicação Apache Flink do Kinesis Data Analytics?
Você pode configurar integrações previamente desenvolvidas com código mínimo ou criar sua própria integração para se conectar com praticamente qualquer fonte de dados. As bibliotecas de código aberto baseadas no Apache Flink oferecem suporte a fontes e destinos de streaming, ou coletores, para a transmissão dos dados do processo. Isso também inclui suporte para enriquecimento de dados por meio de conectores assíncronos de entrada/saída. Abaixo apresentamos uma lista de conectores específicos concluídos nas bibliotecas de código aberto.
  • Fontes de dados de streaming: Amazon Managed Streaming for Apache Kafka (Amazon MSK), Amazon Kinesis Data Streams
  • Destinos ou coletores: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB, Amazon Elasticsearch Service e Amazon S3 (por meio de integrações do coletor de arquivos)
O Apache Flink também inclui outros conectores, incluindo o Apache Kafka, o Apache Casssandra, o Elasticsearch e muito mais.
 
P: As aplicações Kinesis Data Analytics para Apache Flink podem replicar dados em streams e/ou tópicos?
Sim. Você pode usar as aplicações Apache Flink do Kinesis Data Analytics para replicar dados entre o Amazon Kinesis Data Streams, Amazon MSK e outros sistemas. Um exemplo fornecido em nossa documentação demonstra como ler de um tópico do Amazon MSK e gravar em outro.
 
P: As integrações personalizadas são compatíveis?
Você pode adicionar uma origem ou um destino ao seu aplicativo, baseando-se em um conjunto de primitivos que permitem ler e gravar arquivos, diretórios, soquetes ou qualquer item que você possa acessar pela Internet. O Apache Flink fornece esses primitivos para fontes de dados e coletores de dados. Os primitivos vêm com configurações como a capacidade de ler e gravar dados continuamente ou em uma única vez, de forma assíncrona ou sincronizada, e muito mais. Por exemplo, você pode configurar uma aplicação para ler continuamente do Amazon S3 ao estender a integração existente de fontes baseadas em arquivos.
 
P: Que modelo de entrega o Kinesis Data Analytics oferece para aplicativos Apache Flink?
As aplicações Apache Flink no Kinesis Data Analytics usam um modelo de entrega “exatamente uma vez” se uma aplicação for criada usando operadores idempotentes, incluindo fontes e coletores. Isso significa que os dados processados terão impacto nos resultados posteriores somente uma única vez. Os pontos de verificação salvam o estado atual da aplicação e permitem que o Kinesis Data Analytics para aplicações Apache Flink recupere a posição da aplicação, a fim de fornecer a mesma semântica de uma execução sem falhas. Os pontos de verificação para aplicações Apache Flink são fornecidos por meio da funcionalidade ponto de verificação do Apache Flink. Por padrão, o Kinesis Data Analytics para aplicações Apache Flink usa a semântica exatamente uma vez do Apache Flink. A aplicação suportará exatamente uma vez a semântica de processamento se você projetar suas aplicações usando origens, operadores e coletores que utilizam a semântica exatamente uma vez do Apache Flink.
 
P: Tenho acesso ao armazenamento local do meu armazenamento de aplicativos?
Sim. O Kinesis Data Analytics para aplicações Apache Flink fornece à sua aplicação 50 GB de armazenamento de aplicações em execução por Unidade de Processamento do Kinesis (KPU). O Kinesis Data Analytics escala o armazenamento com sua aplicação. A execução do armazenamento de aplicativos é usada para salvar o estado do aplicativo por meio da utilização de pontos de verificação. Isso também é acessível ao código do aplicativo para usar como disco temporário para armazenamento em cache de dados ou qualquer outra finalidade. O Kinesis Data Analytics pode remover os dados do armazenamento de aplicativos em execução não salvos por meio dos pontos de verificação (por exemplo, operadores, fontes e coletores) a qualquer momento. Todos os dados armazenados no armazenamento de aplicações em execução recebem criptografia de dados ociosos.
 
P: Como o Kinesis Data Analytics para Apache Flink faz backup automaticamente da minha aplicação?
O Kinesis Data Analytics faz o backup automático do estado do sua aplicação em execução usando pontos de verificação e snapshots. Os pontos de verificação salvam o estado atual da aplicação e permitem que o Kinesis Data Analytics para aplicações Apache Flink recupere a posição da aplicação, a fim de fornecer a mesma semântica de uma execução sem falhas. Os pontos de verificação utilizam o armazenamento de aplicações em execução. Os snapshots salvam um ponto no tempo do ponto de recuperação para aplicativos. Os snapshots utilizam backups duráveis de aplicativos.
 
P: O que são snapshots de aplicativos?
Os snapshots permitem que você crie e restaure seu aplicativo em um ponto anterior no tempo. Isso permite manter o estado anterior do aplicativo e revertê-lo a qualquer momento. Você controla os snapshots que tiver em qualquer ponto do zero a milhares de snapshots. Os snapshots usam backups duráveis de aplicativos e o Kinesis Data Analytics cobra você com base no tamanho deles. O Kinesis Data Analytics criptografa os dados salvos em snapshots por padrão. Você pode excluir snapshots individuais por meio da API ou todos os snapshots por meio da exclusão do seu aplicativo.
 
P: Quais versões do Apache Flink são compatíveis?
O Amazon Kinesis Data Analytics para aplicações Apache Flink é compatível com o Apache Flink 1.6 e 1.8 (recomendado). 
 
O Apache Flink 1.8 no Kinesis Data Analytics é compatível com a versão 8 do Java e Scala 2.1.1. Você encontra mais informações na seção Criar uma aplicação do Guia do desenvolvedor da AWS.
 
P: O Kinesis Data Analytics para aplicações Apache Flink pode ser executado no Apache Beam?
Sim, ele é compatível com aplicações de streaming criadas usando o Apache Beam Java SDK versão 2.23. Você pode criar aplicações de streaming do Apache Beam em Java e executá-las usando o Apache Flink 1.8 no Amazon Kinesis Data Analytics, Apache Spark em execução on-premises e em outros mecanismos de execução compatíveis com Apache.

P: O que é o Apache Beam?
O Apache Beam é um modelo unificado de código aberto para definir aplicações de streaming e processamento de dados em lote que podem ser executadas em vários mecanismos de execução.

Criação de aplicações SQL

Configuração de entrada para aplicativos SQL

P: Quais entradas são compatíveis com um aplicativo SQL do Kinesis Data Analytics?
Os aplicativos SQL no Kinesis Data Analytics são compatíveis com dois tipos de entradas: fontes de dados de streaming e fontes de dados de referência. Uma fonte de dados de streaming gera continuamente dados, lidos pelo aplicativo para processamento. Uma fonte de dados de referência são dados estáticos que a sua aplicação usa para aprimorar dados provenientes de origens de streaming. Cada aplicação não pode ter mais do que uma fonte de dados de streaming e não mais do que uma fonte de dados de referência. Uma aplicação lê e processa continuamente novos dados de fontes de dados de streaming, como Amazon Kinesis Data Streams ou Amazon Kinesis Data Firehose. Uma aplicação lê uma fonte de dados de referência, como o Amazon S3, em sua totalidade para uso no aprimoramento da fonte de dados de streaming por meio de JOINs do SQL.
 
P: O que é uma fonte de dados de referência?
Uma fonte de dados de referência são dados estáticos que a sua aplicação usa para aprimorar dados provenientes de origens de streaming. Armazene dados de referência como um objeto no bucket do seu S3. Quando o aplicativo SQL é inicializado, o Kinesis Data Analytics lê o objeto do S3 e cria uma tabela SQL no aplicativo para armazenar os dados de referência. O código do aplicativo pode, então, associá-la a um fluxo no aplicativo. Você pode atualizar os dados na tabela SQL chamando a API UpdateApplication.
 
P: Como posso configurar uma fonte de dados de streaming no meu aplicativo SQL?
Uma fonte de dados de streaming pode ser um fluxo de dados do Amazon Kinesis ou um fluxo de entrega do Amazon Kinesis Data Firehose. O aplicativo SQL do Kinesis Data Analytics lê continuamente novos dados de fontes de dados de streaming à medida que chegam em tempo real. Os dados são disponibilizados no seu código SQL por meio de um streaming no aplicativo. Um streaming no aplicativo age como uma tabela SQL, pois, por meio dele, você pode criar, inserir e selecionar. No entanto, a diferença é que um streaming no aplicativo é atualizado continuamente com novos dados da fonte de dados de streaming.
 
Você pode usar o Console de Gerenciamento da AWS para adicionar uma fonte de dados de streaming. Você pode aprender mais sobre fonte na seção Configuração de entrada do aplicativo do Guia do desenvolvedor do Kinesis Data Analytics para SQL.
 
P: Como posso configurar uma fonte de dados de referência no meu aplicativo SQL?
Uma fonte de dados de referência pode ser um objeto do Amazon S3. O aplicativo SQL do Kinesis Data Analytics lê o objeto do S3 por completo quando inicia a execução. Os dados são disponibilizados no seu código SQL por meio de uma tabela. O caso de uso mais comum de uma fonte de dados de referência é a sua utilização para aprimorar os dados recebidos da fonte de dados de streaming usando um JOIN do SQL.
 
Usando a ILC da AWS, você pode adicionar uma fonte de dados de referência especificando o bucket do S3, o objeto, a função do IAM e o schema associado. O Kinesis Data Analytics carrega esses dados quando você inicia o aplicativo e os recarrega toda vez que uma chamada de API de atualização é realizada.
 
P: Quais formatos de dados são compatíveis com os aplicativos SQL?
Os aplicativos SQL no Kinesis Data Analytics podem detectar o esquema e analisa automaticamente registros JSON e CSV com codificação UTF-8 usando a API DiscoverInputSchema. Esse esquema é aplicado aos dados lidos no fluxo como parte da inserção em um fluxo no aplicativo.
 
Para outros dados com codificação UTF-8 que não usem um delimitador, usem um delimitador que não seja o CSV, ou nos casos em que a API de descoberta não descobriu totalmente o schema, você pode definir um schema usando o editor de schema interativo ou usar funções de manipulação de string para estruturar seus dados. Para obter mais informações, consulte Usar o recurso de descoberta de esquema em dados em streaming no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL.
 
P: Como o fluxo de entrada é exposto ao código SQL?
O Kinesis Data Analytics para SQL aplica o esquema especificado e insere os dados em um ou mais fluxos no aplicativo para origens de streaming, e em uma tabela SQL única para fontes de referência. O número padrão de fluxos no aplicativo será o que atender às necessidades da maioria dos seus casos de uso. Você deve aumentá-lo, caso ache que sua aplicação não está acompanhando os dados mais recentes no seu stream de dados, conforme o definido pela métrica MillisBehindLatest do CloudWatch. O número de streamings no aplicativo exigido é impactado pelo volume de throughput no seu stream de origem e na complexidade da sua consulta. O parâmetro para a especificação do número de streamings no aplicativo mapeado para o seu fluxo de origem é chamado de paralelismo de entrada.

Criação do código do aplicativo para aplicativos SQL

P: Qual é a aparência do código do aplicativo SQL?
O código do aplicativo é uma série de instruções SQL que processam entrada e produzem saída. Essas instruções SQL operam em streamings no aplicativo e tabelas de referência. Um streaming no aplicativo funciona como uma tabela continuamente atualizada em que você pode executar as operações SQL SELECT e INSERT. Suas origens e seus destinos configurados são expostos para o código SQL por meio de streamings no aplicativo. Você também pode criar streamings no aplicativo adicionais para armazenar resultados de consulta intermediários.
 
Você pode usar o seguinte padrão para trabalhar com streamings no aplicativo:
  • Sempre use uma instrução SELECT no contexto de uma instrução INSERT. Ao selecionar linhas, você insere resultados em outro streaming no aplicativo.
  • Use uma instrução INSERT no contexto de um bombeamento. Use um bombeamento para tornar uma instrução INSERT contínua e grave em um streaming no aplicativo.
  • Use um bombeamento para juntar streamings no aplicativo, os selecionando por meio de um streaming no aplicativo e os inserindo em outro streaming no aplicativo.
 
O código SQL a seguir disponibiliza um aplicativo simples e operacional:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
Para obter mais informações sobre o código do aplicativo, consulte Código do aplicativo no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL.
 
P: Como o Kinesis Data Analytics me ajuda com a escrita de código SQL?
O Kinesis Data Analytics inclui uma biblioteca de modelos de análise para casos de uso comuns, como filtros de streaming, intervalos de tempo em cascata e detecção de anomalias. Acesse esses modelos por meio do editor SQL no Console de Gerenciamento da AWS. Depois que você criar uma aplicação e navegar até o editor SQL, os modelos serão disponibilizados no canto superior esquerdo do console.
 
P: Como posso executar a detecção de anomalias em tempo real no Kinesis Data Analytics?
O Kinesis Data Analytics contém funções SQL predefinidas para vários recursos analíticos avançados, inclusive um para a detecção de anomalias. Basta fazer uma chamada do código SQL para essa função a fim de detectar anomalias em tempo real. O Kinesis Data Analytics usa o algoritmo Random Cut Forest para implementar a detecção de anomalias. Para obter mais informações sobre o Random Cut Forests, consulte o artigo técnico Detecção de anomalias em dados de streaming.

Configuração de destinos em aplicativos SQL

P: Quais destinos são compatíveis?
O Kinesis Data Analytics para SQL oferece suporte a até quatro destinos por aplicação. Você pode manter resultados SQL para o Amazon S3, o Amazon Redshift, o Amazon Elasticsearch Service (por meio do Amazon Kinesis Data Firehose) e o Amazon Kinesis Data Streams. É possível gravar em um destino que não seja diretamente compatível com o Kinesis Data Analytics enviando os resultados SQL para o Amazon Kinesis Data Streams e aproveitando sua integração com o AWS Lambda para enviar a um destino de sua escolha.
 
P: Como eu configuro um destino?
No seu código da aplicação, você grava a saída de instruções SQL em um ou mais streamings no aplicativo. Como opção, você pode adicionar uma configuração de saída para que a sua aplicação mantenha tudo o que for gravado nos fluxos no aplicativo específicos, para até quatro destinos externos. Esses destinos externos podem ser um bucket do Amazon S3, uma tabela do Amazon Redshift, um domínio do Amazon Elasticsearch Service (por meio do Amazon Kinesis Data Firehose) e um fluxo de dados do Amazon Kinesis. Cada aplicativo oferece suporte a até quatro destinos, que podem ser qualquer combinação dos descritos acima. Para obter mais informações, consulte Configuração de fluxos de saída no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL.
 
P: Meu destino preferencial não é compatível diretamente. Como posso enviar resultados SQL para esse destino?
Você pode usar o AWS Lambda para gravar em um destino cujo uso não seja diretamente compatível usando o Kinesis Data Analytics para SQL. Nós recomendamos que você grave resultados em um fluxo de dados do Amazon Kinesis e use o AWS Lambda para ler os resultados processados e enviá-los para o destino de sua escolha. Para obter mais informações, consulte a sessão Exemplo: integração do AWS Lambda no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL. Como alternativa, você pode usar um fluxo de entrega do Kinesis Data Firehose para carregar os dados no Amazon S3 e, então, acionar uma função do AWS Lambda para ler esses dados e enviá-los ao destino de sua escolha. Para obter mais informações, consulte Usar o AWS Lambda com o Amazon S3 no Guia do desenvolvedor do AWS Lambda.
 
P: Que modelo de entrega o Kinesis Data Analytics oferece?
Os aplicativos SQL no Kinesis Data Analytics usam o modelo de entrega “ao menos uma vez” para a saída de aplicativos para os destinos configurados. Os aplicativos do Kinesis Data Analytics recebem pontos de verificação internos, que são os momentos específicos em que os registros de saída foram entregues para os destinos sem perda de dados. O serviço usa os pontos de verificação conforme a necessidade para garantir que a saída do aplicativo seja entregue pelo menos uma vez aos destinos configurados. Para obter mais informações sobre o modelo de entrega, consulte Configuração da saída do aplicativo no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL.

Comparação com outras soluções de processamento de fluxos

P: Qual é a diferença entre usar o Amazon Kinesis Data Analytics e executar meu próprio aplicativo utilizando a biblioteca de cliente do Amazon Kinesis?
A biblioteca de cliente do Amazon Kinesis (KCL) é uma biblioteca predefinida que ajuda você a criar aplicativos consumidores para ler e processar dados de um fluxo de dados do Amazon Kinesis. A KCL resolve problemas complexos, como a adaptação a mudanças no volume de streams de dados, o balanceamento de carga de dados de streaming, a coordenação de serviços distribuídos e o processamento de dados com tolerância a falhas. A KCL permite que você se concentre na lógica de negócios durante a criação de aplicativos.
 
Com o Kinesis Data Analytics, você pode processar e consultar dados de streaming em tempo real. Você usa o SQL padrão para processar seus fluxos de dados, portanto, não é necessário aprender uma nova linguagem de programação. Basta indicar ao Kinesis Data Analytics um stream de dados de entrada, escrever consultas SQL e especificar onde você deseja carregar os resultados. O Kinesis Data Analytics usa a KCL para ler dados de fontes de dados de streaming como uma parte de um aplicativo subjacente. O serviço se encarrega disso, como também de muitos dos conceitos mais complexos associados ao uso da KCL, como a definição de pontos de verificação.
 
Caso deseje ter uma solução gerenciada e utilizar o SQL para processar os dados do seu stream de dados, você deve usar o Kinesis Data Analytics. Use a KCL se for necessário criar uma solução de processamento personalizada cujos requisitos não são atendidos pelo Kinesis Data Analytics e você puder gerenciar o aplicativo consumidor resultante.

Acordo de Nível de Serviço

P: O que o SLA do Amazon Kinesis Data Analytics garante?

O SLA do Amazon Kinesis Data Analytics garante uma porcentagem de tempo de disponibilidade de pelo menos 99,9% para o Amazon Kinesis Data Analytics.

P: Como saberei se me qualifico para um crédito de serviço do SLA?

Você estará qualificado para um crédito de SLA para o Amazon Kinesis Data Analytics nos termos do SLA do Amazon Kinesis Data Analytics se mais de uma zona de disponibilidade na qual você executar uma tarefa, na mesma região, tiver uma porcentagem de tempo de disponibilidade inferior a 99,9% durante qualquer ciclo de faturamento mensal.

Para obter detalhes completos sobre todos os termos e condições do SLA, bem como detalhes sobre como enviar uma alegação, consulte a página de detalhes do SLA do Amazon Kinesis.

Comece a usar o Amazon Kinesis Data Analytics

Visite a página de definição de preço do Kinesis Data Analytics
Calcule seus custos

Visite a página de definição de preço do Amazon Kinesis Data Analytics.

Consulte o guia de conceitos básicos
Consulte o guia de conceitos básicos

Saiba como usar o Amazon Kinesis Data Analytics no guia passo a passo para SQL ou Apache Flink.

Comece a criar no console
Comece a criar aplicativos de streaming

Crie seu primeiro aplicativo de streaming no console do Amazon Kinesis Data Analytics.