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 aplicativos de streaming com outros serviços da AWS. Você pode criar rapidamente consultas SQL e aplicativos Java sofisticados 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 administra tudo o que é necessário para executar continuamente os aplicativos em tempo real e dimensiona automaticamente para corresponder 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. Esses aplicativos podem armazenar pequenos registros em arquivos maiores antes da entrega, além de realizar associações sofisticadas entre fluxos e tabelas. Por exemplo, você pode criar um aplicativo que leia continuamente dados do sensor de IoT armazenados no Amazon Kinesis Data Streams, organizar os dados por tipo de sensor, remover dados duplicados, normalizar os dados por um 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. Seus aplicativos 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 seus aplicativos e usuários em tempo real. Com o Kinesis Data Analytics, você pode utilizar o código Java ou SQL 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 outro aplicativo 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 aplicativos Java para o Kinesis Data Analytics?
Faça login no console do Amazon Kinesis Data Analytics e crie um novo aplicativo de processamento de fluxos. Você também pode usar a ILC da AWS e os SDKs da AWS. Depois de criar um aplicativo, vá para o ambiente de desenvolvimento integrado favorito, conecte-se à AWS e instale as bibliotecas Java de código aberto. As bibliotecas de código aberto são baseadas no Apache Flink, uma estrutura de código aberto e mecanismo para processamento de fluxos de dados e SDKs da AWS. As bibliotecas extensíveis incluem mais de 25 operadores de processamento de fluxos predefinidos, como janela e agregado, e integrações de serviço da AWS, como o Amazon Kinesis Data Streams e o Amazon Kinesis Data Firehose. Uma vez definido, você faz o upload do seu código para o Amazon Kinesis Data Analytics e o serviço administra tudo o que é necessário para executar continuamente os aplicativos em tempo real, incluindo dimensionar automaticamente para corresponder ao volume e à taxa de transferência dos dados recebidos.
 
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 um novo aplicativo de processamento de fluxos. Você também pode usar a ILC da AWS e os SDKs da AWS. 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 service limits, consulte os limites no Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL. Para obter informações detalhadas sobre os service limits para aplicativos em Java, visite a seção Limites no Guia do desenvolvedor do Amazon Kinesis Data Analytics para Java.

Principais conceitos

P: O que é um aplicativo do Kinesis Data Analytics?
Um aplicativo é a entidade do Kinesis Data Analytics com a qual você trabalha. Os aplicativos do Kinesis Data Analytics leem e processam continuamente dados de streaming em tempo real. Grave o código do aplicativo usando SQL ou Java 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 fluxos de dados no aplicativo usando o código do aplicativo, enviando dados processados para destinos ou fluxos de dados subsequentes no aplicativo. Você adiciona entradas dentro do código do aplicativo para aplicativos Java e por meio da API para aplicativos SQL.
 
Código do aplicativo – Uma série de operadores Java ou instruções SQL que processam entrada e produzem saída. Em sua forma mais simples, o código do aplicativo pode ser um único operador Java ou uma instrução SQL que lê de um fluxo de dados no aplicativo associado a uma fonte de streaming e grava em um fluxo de dados no aplicativo associado a uma saída. Você pode gravar o código Java ou SQL que divide o fluxo de dados inicial no aplicativo em vários fluxos e aplica lógica adicional a esses fluxos separados.
 
Saída – Você pode criar um ou mais fluxos no aplicativo para armazenar resultados intermediários. Como opção, você pode configurar uma saída do aplicativo para que ela mantenha dados de fluxos no aplicativo específicos para um destino externo. Você adiciona essas saídas dentro do código do aplicativo para aplicativos Java ou API para aplicativos SQL.
 
P: O que é um fluxo de dados no aplicativo?
Um fluxo de dados no aplicativo é uma entidade que armazena dados continuamente em seu aplicativo para que você execute o processamento. Seus aplicativos gravam e leem continuamente desses fluxos de dados no aplicativo. Para aplicativos Java, você interage com o fluxo no aplicativo ao processar os dados por meio de operadores de fluxo. Os operadores transformam um ou mais fluxos de dados em um novo fluxo 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 aplicativo é compatível?
Para aplicativos Java, o Kinesis Data Analytics é compatível com aplicativos Java criados usando o Apache Flink e os SDKs da AWS. Para aplicativos 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 seu aplicativo, 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 aplicativos Java, o Kinesis Data Analytics atribui 50 GB de armazenamento de aplicativos em execução por KPU que seu aplicativo 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 um aplicativo em execução que é usado para recuperação imediata após uma interrupção do aplicativo. Você também pode controlar a execução paralela das tarefas do aplicativo Kinesis Data Analytics para Java (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) do seu aplicativo, 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 Java.
 
Para aplicativos SQL, cada origem de streaming é mapeada para um fluxo no aplicativo 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 aplicativos do Kinesis Data Analytics?
Para obter informações sobre as melhores práticas para SQL, consulte a seção Melhores práticas do Guia do desenvolvedor do Amazon Kinesis Data Analytics para SQL, que aborda o gerenciamento de aplicativos, a definição do esquema de entrada, a conexão com saídas e a criação do código do aplicativo.

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 escala automaticamente o número de KPUs necessárias para seu aplicativo de processamento de fluxos, 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 aplicativos em Java, você é cobrado por uma KPU única adicional por aplicativo usada para orquestração de aplicativos. Os aplicativos em Java também são cobrados pelo armazenamento de aplicativos em execução e pelos backups de aplicativos duráveis. O armazenamento de aplicativos em execução é usado pelos recursos de processamento stateful do Amazon Kinesis Data Analytics e é cobrado por GB/mês. Os backups de aplicativos duráveis são opcionais, provisionam um ponto de recuperação point-in-time para aplicativos e são cobrados por GB/mês.
 
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 um aplicativo do Kinesis Data Analytics em execução que não esteja processando nenhum dado de origem?
Para aplicativos SQL, será cobrado um mínimo de uma KPU, caso um aplicativo do Kinesis Data Analytics esteja em execução. Para aplicativos em Java, será cobrado um mínimo de duas KPUs e o armazenamento de aplicativo em execução de 50 GB, caso um aplicativo 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 seu aplicativo.

Criação de aplicativos Java

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

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 fazendo o download das 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 seu primeiro aplicativo no Guia do desenvolvedor do Amazon Kinesis Data Analytics para Java.
 
P: Qual é a aparência do código do aplicativo?
Você cria seu código Java usando fluxos de dados e operadores de fluxos. Os fluxos de dados do aplicativo são a estrutura de dados que são executadas durante o processamento em relação ao uso do seu código Java. Os dados fluem continuamente das fontes para os fluxos de dados do aplicativo. 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 Java 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 fluxo 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 Java. 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 um aplicativo Java do Kinesis Data Analytics?
Você pode configurar as integrações por meio de um código mínimo. 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 da AWS incluídos nas bibliotecas de código aberto.
  • Fonte de dados de streaming: Amazon Kinesis Data Streams
  • Destinos ou coletores: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB 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 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 um aplicativo 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 Java?
Os aplicativos Java no Kinesis Data Analytics usam um modelo de entrega “exactly-once” se um aplicativo for criado 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 do aplicativo e permitem que o Kinesis Data Analytics para aplicativos Java recupere a posição do aplicativo, a fim de fornecer a mesma semântica de uma execução sem falhas. Os pontos de verificação para aplicativos Java são fornecidos através da funcionalidade checkpointing do Apache Flink. Por padrão, o Kinesis Data Analytics para aplicativos Java usa a semântica exactly-once do Apache Flink. O aplicativo suportará exatamente uma vez a semântica de processamento se você projetar seus aplicativos usando origens, operadores e coletores que utilizam a semântica exactly-once do Apache Flink.
 
P: Tenho acesso ao armazenamento local do meu armazenamento de aplicativos?
Sim. O Kinesis Data Analytics para aplicativos Java fornece ao seu aplicativo 50 GB de armazenamento de aplicativos em execução por Unidade de Processamento do Kinesis (KPU). O Kinesis Data Analytics escala o armazenamento com seu aplicativo. 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 aplicativos em execução recebem criptografia de dados ociosos.
 
P: Como o Kinesis Data Analytics para Java faz backup automaticamente do meu aplicativo?
O Kinesis Data Analytics faz o backup automático do estado do seu aplicativo em execução usando pontos de verificação e snapshots. Os pontos de verificação salvam o estado atual do aplicativo e permitem que o Kinesis Data Analytics para aplicativos Java recupere a posição do aplicativo, a fim de fornecer a mesma semântica de uma execução sem falhas. Os pontos de verificação utilizam o armazenamento de aplicativos 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 aplicativos Java é compatível com o Apache Flink 1.6 e o Java versão 8.

Criação de aplicativos 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 whitepaper 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 aplicativo. 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. 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.

Comece a usar o Amazon Kinesis Data Analytics

Product-Page_Standard-Icons_01_Product-Features_SqInk
Calcule seus custos

Acesse a página de definição de preço

Saiba mais 
Product-Page_Standard-Icons_01_Product-Features_SqInk
Consulte o guia de conceitos básicos

Saiba como usar o Amazon Kinesis Data Analytics neste guia detalhado.

Product-Page_Standard-Icons_03_Start-Building_SqInk
Comece a criar aplicativos de streaming

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