Configuración de entrada de la aplicación - Guía para desarrolladores de aplicaciones de Amazon Kinesis Data Analytics para SQL

Para proyectos nuevos, le recomendamos que utilice el nuevo servicio gestionado para Apache Flink Studio en lugar de aplicaciones de Kinesis Data Analytics para SQL. El servicio gestionado para Apache Flink Studio combina la facilidad de uso con capacidades analíticas avanzadas, lo que le permite crear aplicaciones sofisticadas de procesamiento de flujos en cuestión de minutos.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de entrada de la aplicación

La aplicación de Amazon Kinesis Data Analytics puede recibir entradas desde un único origen de streaming y, opcionalmente, puede utilizar un origen de datos de referencia. Para obtener más información, consulte Amazon Kinesis Data Analytics para aplicaciones SQL: Cómo funciona. Las secciones en este tema describen las fuentes de entrada de la aplicación.

Configuración de origen de streaming

En el momento en que se crea una aplicación, debe especificar un origen de streaming. También puede modificar una entrada después de crear la aplicación. Amazon Kinesis Data Analytics admite los siguientes orígenes de streaming para la aplicación:

  • Un flujo de datos de Kinesis

  • Un flujo de entrega de Kinesis Data Firehose.

nota

Después del 12 de septiembre de 2023, no podrá crear nuevas aplicaciones con Kinesis Data Firehose como origen si aún no utiliza Kinesis Data Analytics para SQL. Los clientes actuales que utilizan Kinesis Data Analytics para aplicaciones SQL con KinesisFirehoseInput pueden seguir añadiendo aplicaciones con KinesisFirehoseInput dentro de una cuenta existente mediante Kinesis Data Analytics. Si ya es cliente y desea crear una nueva cuenta con aplicaciones de Kinesis Data Analytics para SQL con KinesisFirehoseInput, puede crear un caso mediante el formulario de aumento del límite de servicio. Para obtener más información, consulte el Centro de AWS Support. Recomendamos probar siempre las aplicaciones nuevas antes de pasarlas a producción.

nota

Si el flujo de datos de Kinesis está cifrado, Kinesis Data Analytics obtiene acceso a los datos de la secuencia cifrada sin problemas y sin necesidad de configuración adicional. Kinesis Data Analytics no almacena datos no cifrados leídos de Kinesis Data Streams. Para obtener más información, consulte ¿Qué es el cifrado en el servidor para las secuencias de Kinesis?

Kinesis Data Analytics explora constantemente el origen de streaming para detectar datos nuevos y los procesa en secuencias en la aplicación según la configuración de entrada.

nota

Puede añadir una secuencia de Kinesis Stream siempre que la entrada de la aplicación no afecte a los datos de la secuencia. Si otro recurso, como una secuencia de entrega de Kinesis Data Firehose, también accedió a la misma secuencia de Kinesis, tanto la secuencia de entrega de Kinesis Data Firehose como la aplicación Kinesis Data Analytics recibirán los mismos datos. Sin embargo, el rendimiento y la limitación pueden verse afectados.

El código de la aplicación puede consultar la secuencia en la aplicación. Como parte de la configuración de entrada debe proporcionar lo siguiente:

  • Origen de streaming: debe proporcionar el nombre de recurso de Amazon (ARN) de la secuencia y un rol de IAM que Kinesis Data Analytics pueda asumir para obtener acceso a la secuencia en su nombre.

  • Prefijo del nombre de secuencia en la aplicación: cuando se inicia la aplicación, Kinesis Data Analytics crea la secuencia en la aplicación especificada. En el código de la aplicación, puede obtener acceso a la secuencia en la aplicación usando este nombre.

    Si lo desea, puede asignar un origen de streaming a varias secuencias en la aplicación. Para obtener más información, consulte Límites. En este caso, Amazon Kinesis Data Analytics crea el número especificado de secuencias en la aplicación con los nombres de la siguiente manera: prefix_001, prefix_002 y prefix_003. De forma predeterminada, Kinesis Data Analytics asigna el origen de streaming a una secuencia en la aplicación denominada prefix_001.

    Existe un límite en la velocidad que puede insertar filas en una secuencia en la aplicación. Por lo tanto, Kinesis Data Analytics admite varias secuencias en la aplicación para que se puedan procesar registros en la aplicación a un ritmo más rápido. Si la aplicación no mantiene el ritmo de los datos del origen de streaming, puede añadir unidades de paralelismo para mejorar el desempeño.

  • Esquema de mapeo: se debe describir el formato de los registros (JSON, CSV) del origen de streaming. También se debe describir cómo se mapea cada registro de la secuencia a las columnas de la secuencia en la aplicación que se crea. Aquí es donde proporciona los nombres de columnas y tipos de datos.

nota

Kinesis Data Analytics añade comillas alrededor de los identificadores (nombre de la secuencia y de las columnas) al crear la secuencia de entrada en la aplicación. Al consultar esta secuencia y las columnas, debe especificarlas entre comillas utilizando exactamente las mismas letras mayúsculas y minúsculas. Para obtener más información sobre los identificadores, consulte identificadores en la referencia SQL de Amazon Managed Service para Apache Flink.

Puede crear una aplicación y configurar las entradas en la consola de Amazon Kinesis Data Analytics. La consola a continuación realiza las llamadas a la API necesarias. Puede configurar la entrada de la aplicación al crear una nueva aplicación de API o al añadirla configuración de entrada en una aplicación existente. Para obtener más información, consulte CreateApplication y AddApplicationInput. A continuación se presenta la parte de la configuración de entrada Createapplication del cuerpo de solicitud de API:

"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" } ]

Configuración de origen de referencia

De forma opcional, puede añadir un origen de datos de referencia a una aplicación existente para enriquecer los datos procedentes de orígenes de streaming. Los datos de referencia se deben almacenar como objeto en el bucket de Amazon S3. Cuando se inicia la aplicación, Amazon Kinesis Data Analytics lee el objeto de Amazon S3 y crea una tabla de referencia en la aplicación. El código de la aplicación puede después unirla con una secuencia en la aplicación.

Los datos de referencia se almacenan en el objeto de Amazon S3 utilizando formatos compatibles (CSV, JSON). Por ejemplo, suponga que su aplicación realiza análisis de órdenes bursátiles. Suponga los siguientes formatos de registro en el origen de streaming:

Ticker, SalePrice, OrderId AMZN $700 1003 XYZ $250 1004 ...

En este caso, podría considerar mantener un origen de datos de referencia para proporcionar detalles para cada símbolo de cotización, como, por ejemplo, el nombre de la empresa.

Ticker, Company AMZN, Amazon XYZ, SomeCompany ...

Puede añadir un origen de datos de referencia de aplicación con la API o con la consola. Amazon Kinesis Data Analytics ofrece las siguientes acciones de API para administrar los orígenes de datos de referencia:

Para obtener información sobre cómo añadir datos de referencia mediante la consola, consulte Ejemplo: Agregar datos de referencia a una aplicación de Kinesis Data Analytics.

Tenga en cuenta lo siguiente:

  • Si la aplicación está en ejecución, Kinesis Data Analytics crea una tabla de referencia en la aplicación y carga los datos de referencia inmediatamente.

  • Si la aplicación no se está ejecutando (por ejemplo, está en estado listo), Kinesis Data Analytics solo guarda la configuración de entrada actualizada. Cuando la aplicación comienza a ejecutarse, Kinesis Data Analytics carga los datos de referencia como una tabla en la aplicación.

Supongamos que desea actualizar los datos después de que Kinesis Data Analytics cree la tabla de referencia en la aplicación. Puede que haya actualizado el objeto de Amazon S3 o que desee utilizar otro objeto de Amazon S3. En este caso, puede llamar explícitamente a UpdateApplication o elegir Acciones, Sincronizar tabla de datos de referencia en la consola. Kinesis Data Analytics no actualiza la tabla de referencia en la aplicación automáticamente.

Existe un límite en el tamaño del objeto de Amazon S3 que se puede crear como origen de datos de referencia. Para obtener más información, consulte Límites. Si el tamaño del objeto supera el límite, Kinesis Data Analytics no puede cargar los datos. El estado de la aplicación aparece como en ejecución, pero no se leen los datos.

Cuando añada un origen de datos de referencia, proporcione la siguiente información:

  • Nombre del bucket de S3 y de la clave de objeto: además del nombre del bucket y de la clave de objeto, también debe proporcionar un rol de IAM que Kinesis Data Analytics pueda asumir para leer el objeto en su nombre.

  • Nombre de tabla de referencia en la aplicación: crea esta tabla en la aplicación y la rellena al leer el objeto de Amazon S3. El nombre de esta tabla se especifica en el código de la aplicación.

  • Esquema de mapeo: describe el formato de registro (JSON, CSV), codificación de los datos almacenados en el objeto de Amazon S3. También debe describir cómo cada elemento de datos se correlaciona con las columnas de la tabla de referencia en la aplicación.

A continuación se muestra el cuerpo de la solicitud en la solicitud de 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" } }