Ejemplo: Detección de anomalías de datos en una secuencia (función RANDOM_CUT_FOREST) - 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.

Ejemplo: Detección de anomalías de datos en una secuencia (función RANDOM_CUT_FOREST)

Amazon Kinesis Data Analytics proporciona una función (RANDOM_CUT_FOREST) que puede asignar una puntuación de anomalías para cada registro en función de los valores en las columnas numéricas. Para obtener más información, consulte la función RANDOM_CUT_FOREST en la Referencia de SQL de Amazon Managed Service para Apache Flink.

En este ejercicio, escribirá el código de la aplicación para asignar una puntuación de anomalías a los registros en el origen de streaming de la aplicación. Haga lo siguiente para configurar la aplicación:

  1. Configure un origen de streaming: configure una secuencia de datos de Kinesis y escriba datos de heartRate de muestra, tal y como se muestra a continuación:

    {"heartRate": 60, "rateType":"NORMAL"} ... {"heartRate": 180, "rateType":"HIGH"}

    El procedimiento proporciona un script de Python para que pueda rellenar la secuencia. Los valores de heartRate se generan de forma aleatoria. El 99 por ciento de los registros tienen valores de heartRate entre 60 y 100, y solo un 1 por ciento de ellos tienen valores de heartRate entre 150 y 200. Por lo tanto, los registros que tienen valores de heartRate comprendidos entre 150 y 200 son anomalías.

  2. Configure la entrada: use la consola para crear una aplicación de Kinesis Data Analytics y configure la entrada de la aplicación mapeando el origen de streaming a una secuencia en la aplicación (SOURCE_SQL_STREAM_001). Cuando se inicia la aplicación, Kinesis Data Analytics lee continuamente el origen de streaming e introduce los registros en la secuencia en la aplicación.

  3. Especifique el código de la aplicación: el ejemplo utiliza el siguiente código de la aplicación:

    --Creates a temporary stream. CREATE OR REPLACE STREAM "TEMP_STREAM" ( "heartRate" INTEGER, "rateType" varchar(20), "ANOMALY_SCORE" DOUBLE); --Creates another stream for application output. CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( "heartRate" INTEGER, "rateType" varchar(20), "ANOMALY_SCORE" DOUBLE); -- Compute an anomaly score for each record in the input stream -- using Random Cut Forest CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "TEMP_STREAM" SELECT STREAM "heartRate", "rateType", ANOMALY_SCORE FROM TABLE(RANDOM_CUT_FOREST( CURSOR(SELECT STREAM * FROM "SOURCE_SQL_STREAM_001"))); -- Sort records by descending anomaly score, insert into output stream CREATE OR REPLACE PUMP "OUTPUT_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM * FROM "TEMP_STREAM" ORDER BY FLOOR("TEMP_STREAM".ROWTIME TO SECOND), ANOMALY_SCORE DESC;

    El código lee filas de la puntuación SOURCE_SQL_STREAM_001, asigna un puntaje de anomalía, y escribe las filas resultante a otra secuencia en la aplicación (TEMP_STREAM). El código de la aplicación luego clasifica los registros en TEMP_STREAM y guarda los resultados en otra secuencia en la aplicación (DESTINATION_SQL_STREAM). Utilice bombas para insertar filas en secuencias en la aplicación. Para obtener más información, consulte Secuencias y bombeos en la aplicación.

  4. Configure la salida: configure la salida de la aplicación para conservar los datos de DESTINATION_SQL_STREAM en un destino externo, que es otra secuencia de datos de Kinesis. La revisión de las puntuaciones de anomalías que se han asignado a cada registro y la determinación de qué puntuación indica que se ha producido una anomalía (y que es necesario que le avisen) es algo ajeno a la aplicación. Puede utilizar una función AWS Lambda para procesar estas puntuaciones de anomalías y configurar alertas.

El ejercicio utiliza la región de Este de EE. UU. (Norte de Virginia) (us-east-1) para crear estas secuencias y su aplicación. Si utiliza cualquier otra región, debe actualizar el código en consecuencia.

Paso siguiente

Paso 1: Preparación