Usar o recurso de descoberta de esquema em dados em streaming - Guia do desenvolvedor do Amazon Kinesis Data Analytics SQL para aplicativos

Para novos projetos, recomendamos que você use o novo Managed Service para Apache Flink Studio em vez do Kinesis Data Analytics for Applications. SQL O Managed Service for Apache Flink Studio combina facilidade de uso com recursos analíticos avançados, permitindo que você crie aplicativos sofisticados de processamento de stream em minutos.

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á.

Usar o recurso de descoberta de esquema em dados em streaming

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 for SQL. Para obter mais informações, consulte Limites.

Fornecer um esquema de entrada que descreve como os registros na entrada de streaming são mapeados para um stream no aplicativo pode ser trabalhoso e propenso a erros. Use a API DiscoverInputSchema (chamada de API de descoberta) para inferir um esquema. Usando amostras aleatórias de registros na fonte de streaming, a API pode inferir um esquema (ou seja, nomes de colunas, tipos de dados e posição do elemento de dados nos dados recebidos).

nota

Para usar a API de descoberta para gerar um esquema de um arquivo armazenado no Amazon S3, consulte Usar o recurso de descoberta de esquema em dados estáticos.

O console usa a API de descoberta para gerar um esquema para uma fonte de streaming especificada. Usando o console, é possível também atualizar o esquema, inclusive adicionar ou remover colunas, alterar nomes de colunas ou tipos de dados e assim por diante. No entanto, faça alterações cuidadosamente para garantir que um esquema inválido não seja criado.

Após finalizar um esquema para o stream no aplicativo, será possível usar funções para manipular strings e valores de data e hora. Use essas funções no código do aplicativo ao trabalhar com linhas no stream no aplicativo resultante. Para ter mais informações, consulte Exemplo: Transformação de valores DateTime .

Nomeação de colunas durante a descoberta de esquema

Durante a descoberta de esquema, o Amazon Kinesis Data Analytics tenta reter o máximo possível do nome da coluna original da fonte de entrada de streaming, exceto nos seguintes casos:

  • O nome do stream de origem é uma palavra-chave reservada do SQL, como TIMESTAMP, USER, VALUES ou YEAR.

  • O nome da coluna de stream de origem contém caracteres não suportados. Somente letras, números e o caractere de sublinhado (_) são suportados.

  • O nome da coluna de stream de origem começa com um número.

  • O nome da coluna de stream de origem tem mais de 100 caracteres.

Se uma coluna for renomeada, o nome da coluna do esquema renomeada começará com COL_. Em alguns casos, nenhum nome de coluna original pode ser retido, por exemplo, se todo o nome tiver caracteres não suportados. Nesse caso, a coluna será chamada COL_#, com # sendo um número que indica o local da coluna na ordem da coluna.

Após a conclusão da descoberta, você poderá atualizar o esquema usando o console para adicionar ou remover colunas ou alterar nomes de coluna, tipos de dados ou tamanho de dados.

Exemplos de nomes de coluna sugeridos pela descoberta

Nome da coluna de stream de origem Nome da coluna sugerido pela descoberta

USER

COL_USER

USER@DOMAIN

COL_USERDOMAIN

@@

COL_0

Problemas de descoberta de esquema

O que acontecerá se o Kinesis Data Analytics não inferir um esquema para uma determinada fonte de streaming?

O Kinesis Data Analytics infere o esquema para formatos comuns, como CSV e JSON, que são codificados em UTF-8. O Kinesis Data Analytics oferece suporte a quaisquer registros codificados em UTF-8 (incluindo texto bruto, como logs e registros de aplicativos) com colunas personalizadas e delimitadores de linhas. Se o Kinesis Data Analytics não inferir um esquema, você poderá definir um esquema manualmente usando o editor de esquema no console (ou usando a API).

Se os dados não seguirem um padrão (que você pode especificar usando o editor de esquema), defina um esquema como uma única coluna do tipo VARCHAR(N), em que N é o maior número de caracteres que você espera que seu registro inclua. A partir daí, será possível usar a manipulação de strings e de data e hora para estruturar os dados a partir do momento que estiverem no stream no aplicativo. Para ver exemplos, consulte Exemplo: Transformação de valores DateTime .