Após uma análise cuidadosa, decidimos descontinuar o Amazon Kinesis Data Analytics SQL para aplicativos em duas etapas:
1. A partir de 15 de outubro de 2025, você não poderá criar um novo Kinesis Data Analytics SQL para aplicativos.
2. Excluiremos as aplicações a partir de 27 de janeiro de 2026. Você não poderá iniciar ou operar seu Amazon Kinesis Data Analytics SQL para aplicativos. O suporte não estará mais disponível para o Amazon Kinesis Data Analytics SQL a partir desse momento. Para obter mais informações, consulte Descontinuação do Amazon Kinesis Data Analytics SQL para aplicativos.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configuração de entrada do aplicativo
Seu aplicativo Amazon Kinesis Data Analytics pode receber entrada de uma única fonte de streaming e, opcionalmente, usar uma fonte de dados de referência. Para ter mais informações, consulte Amazon Kinesis Data Analytics para aplicativos SQL: como funciona. As seções neste tópico descrevem as fontes de entrada do aplicativo.
Tópicos
- Configuração de uma fonte de streaming
- Configuração de uma fonte de referência
- Trabalho com JSONPath
- Mapeamento de elementos de fonte de streaming para colunas de entrada do SQL
- Usar o recurso de descoberta de esquema em dados em streaming
- Usar o recurso de descoberta de esquema em dados estáticos
- Pré-processar dados usando uma função do Lambda
- Paralelização dos streams de entrada para aumentar a taxa de transferência
Configuração de uma fonte de streaming
No momento em que você criar um aplicativo, especifique uma fonte de streaming. Também é possível modificar uma entrada depois de criar o aplicativo. O Amazon Kinesis Data Analytics é compatível com as seguintes fontes de streaming do aplicativo:
-
Um fluxo de dados do Kinesis
-
Um fluxo de entrega do Firehose
nota
Depois de 12 de setembro de 2023, você não poderá criar novos aplicativos usando o Kinesis Data Firehose como fonte se ainda não estiver usando o Kinesis Data Analytics para SQL. Os clientes atuais que usam o Kinesis Data Analytics para aplicativos SQL com KinesisFirehoseInput
podem continuar adicionando aplicativos KinesisFirehoseInput
em uma conta existente usando o Kinesis Data Analytics. Se você já é cliente e deseja criar uma nova conta com os aplicativos Kinesis Data Analytics para SQL com KinesisFirehoseInput
, você pode criar um caso usando o formulário de aumento do limite de serviço. Para obter mais informações, consulte a Central AWS Support
nota
Se o fluxo de dados do Kinesis estiver criptografado, o Kinesis Data Analytics acessa os dados no fluxo criptografado perfeitamente sem precisar de outras configurações. O Kinesis Data Analytics não armazena dados não criptografados lidos dos fluxos de dados Kinesis. Para obter mais informações, consulte O que é criptografia no lado do servidor para streamings de dados do Kinesis?.
O Kinesis Data Analytics apura continuamente a fonte de streaming para novos dados e os ingere em fluxos de aplicativos de acordo com a configuração de entrada.
nota
A adição de um fluxo do Kinesis como entrada do seu aplicativo não afeta os dados do fluxo. Se outro recurso, como um fluxo de entrega do Firehose, também acessasse o mesmo fluxo do Kinesis, tanto o fluxo de entrega do Firehose quanto a aplicação do Kinesis Data Analytics receberiam os mesmos dados. Entretanto, o throughput e o controle de utilização podem ser afetados.
O código de aplicativo pode consultar o stream de aplicativos. Como parte da configuração de entrada, forneça o seguinte:
-
Fonte de streaming – forneça o nome do recurso da Amazon (ARN) do fluxo e um perfil do IAM que o Kinesis Data Analytics pode assumir para acessar o fluxo em seu nome.
-
Prefixo do nome de fluxo no aplicativo – quando você inicia o aplicativo, o Kinesis Data Analytics cria o fluxo no aplicativo especificado. No código do aplicativo, acesse o stream no aplicativo usando o mesmo nome.
Ou você pode mapear uma fonte de streaming para vários fluxos no aplicativo. Para ter mais informações, consulte Limites. Nesse caso, o Amazon Kinesis Data Analytics cria o número especificado de streams no aplicativo com nomes assim:
prefixo
_001
,prefixo
_002
, eprefixo
_003
. Por padrão, o Kinesis Data Analytics mapeia a fonte de streaming para um fluxo no aplicativo chamadoprefixo
_001
.Há um limite na velocidade que você pode inserir linhas em um stream no aplicativo. Portanto, o Kinesis Data Analytics oferece suporte a vários streams no aplicativo para que você possa trazer registros para seu aplicativo a uma velocidade muito mais alta. Se você considerar que o aplicativo não está acompanhando o ritmo dos dados na fonte de streaming, adicione unidades de paralelismo para melhorar o desempenho.
-
Mapeamento de esquema – você descreve o formato de registro (JSON, CSV) na fonte de streaming. Você também descreve como cada registro no stream mapeia para colunas no stream do aplicativo criado. É aqui você fornece nomes de colunas e tipos de dados.
nota
O Kinesis Data Analytics adiciona aspas em torno dos identificadores (nome de stream e nomes de coluna) ao criar o stream no aplicativo de entrada. Ao consultar esse stream e as colunas, você deve especificá-los entre aspas usando a mesma capitalização (letras maiúsculas e minúsculas exatamente). Para obter mais informações sobre identificadores, consulte Identificadores no Amazon Managed Service for Apache Flink SQL Reference.
É possível criar um aplicativo e configurar entradas no console do Amazon Kinesis Data Analytics. O console então faz as chamadas de API necessárias. Você pode configurar a entrada do aplicativo ao criar uma nova API de aplicativo ou adicionar uma configuração de entrada a um aplicativo existente. Para ter mais informações, consulte CreateApplication e AddApplicationInput. Veja a seguir a parte da configuração de entrada do corpo da solicitação da API Createapplication
:
"Inputs": [ { "InputSchema": { "RecordColumns": [ { "Mapping": "string", "Name": "string", "SqlType": "string" } ], "RecordEncoding": "string", "RecordFormat": { "MappingParameters": { "CSVMappingParameters": { "RecordColumnDelimiter": "string", "RecordRowDelimiter": "string" }, "JSONMappingParameters": { "RecordRowPath": "string" } }, "RecordFormatType": "string" } }, "KinesisFirehoseInput": { "ResourceARN": "string", "RoleARN": "string" }, "KinesisStreamsInput": { "ResourceARN": "string", "RoleARN": "string" }, "Name": "string" } ]
Configuração de uma fonte de referência
Como opção, você pode adicionar uma fonte de dados de referência a um aplicativo existente para enriquecer os dados que chegam de fontes de streaming. Você deve armazenar os dados de referência como um objeto no bucket do Amazon S3. Quando o aplicativo é iniciado, o Amazon Kinesis Data Analytics lê o objeto do Amazon S3 e cria uma tabela de referência no aplicativo. O código do aplicativo pode, então, associar-se a um streaming no aplicativo.
Armazene os dados de referência no objeto do Amazon S3 usando formatos compatíveis (CSV, JSON). Por exemplo, suponha que o seu aplicativo realiza análises em pedidos de ações. Assuma o seguinte formato de registro na fonte de streaming:
Ticker, SalePrice, OrderId AMZN $700 1003 XYZ $250 1004 ...
Neste caso, você pode considerar a manutenção de uma fonte de dados de referência para fornecer detalhes para cada marcador de ações, como nome da empresa.
Ticker, Company AMZN, Amazon XYZ, SomeCompany ...
Você pode adicionar uma fonte de dados de referência do aplicativo com a API ou com o console. O Amazon Kinesis Data Analytics oferece as seguintes ações de API para gerenciar fontes de dados de referência:
Para obter informações sobre como adicionar dados de referência usando o console, consulte Exemplo: adição de dados de referência a um aplicativo do Kinesis Data Analytics.
Observe o seguinte:
-
Se o aplicativo estiver em execução, o Kinesis Data Analytics criará uma tabela de referência no aplicativo e, em seguida, carregará os dados de referência imediatamente.
-
Se o aplicativo não estiver em execução (por exemplo, no estado de prontidão), o Kinesis Data Analytics salvará apenas a configuração de entrada atualizada. Quando o aplicativo começa a executar, o Kinesis Data Analytics carrega os dados de referência no aplicativo como uma tabela.
Suponha que você deseje atualizar os dados depois que o Kinesis Data Analytics criar a tabela de referência no aplicativo. Talvez você tenha atualizado o objeto do Amazon S3 ou queira usar outro objeto do Amazon S3. Nesse caso, você pode chamar explicitamente UpdateApplication ou selecionar Ações, Sincronizar tabela de dados de referência no console. O Kinesis Data Analytics não atualiza a tabela de referência no aplicativo automaticamente.
Há um limite para o tamanho do objeto do Amazon S3 que você pode criar como uma fonte de dados de referência. Para ter mais informações, consulte Limites. Se o tamanho do objeto exceder o limite, o Kinesis Data Analytics não poderá carregar os dados. O estado do aplicativo aparecerá como em execução, mas os dados não serão lido.
Quando você adiciona uma fonte de referência de dados, fornece as seguintes informações:
-
Nome da chave do objeto e bucket do S3 – além do nome do bucket e da chave do objeto, forneça também um perfil do IAM que o Kinesis Data Analytics possa assumir para ler o objeto em seu nome.
-
Nome da tabela de referência no aplicativo – o Kinesis Data Analytics cria essa tabela no aplicativo e a preenche lendo o objeto do Amazon S3. Esse é o nome da tabela que você especifica no código do aplicativo.
-
Mapeamento de esquema – descreva o formato de registro (JSON, CSV), a codificação de dados armazenados no objeto do Amazon S3. Descreva também como cada elemento de dados é mapeado para colunas na tabela de referência no aplicativo.
A tabela a seguir mostra o corpo de solicitação na solicitação da API AddApplicationReferenceDataSource
.
{ "applicationName": "string", "CurrentapplicationVersionId": number, "ReferenceDataSource": { "ReferenceSchema": { "RecordColumns": [ { "IsDropped": boolean, "Mapping": "string", "Name": "string", "SqlType": "string" } ], "RecordEncoding": "string", "RecordFormat": { "MappingParameters": { "CSVMappingParameters": { "RecordColumnDelimiter": "string", "RecordRowDelimiter": "string" }, "JSONMappingParameters": { "RecordRowPath": "string" } }, "RecordFormatType": "string" } }, "S3ReferenceDataSource": { "BucketARN": "string", "FileKey": "string", "ReferenceRoleARN": "string" }, "TableName": "string" } }