Transmitir trabajos de ETL in Pegamento AWS puede consumir datos de fuentes de transmisión como Kinesis amazónica y Apache Kafka, limpie y transforme esos flujos de datos sobre la marcha, así como cargue continuamente los resultados en Servicio de almacenamiento simple de Amazon (Amazon S3), lagos de datos, almacenes de datos u otros almacenes de datos.
La naturaleza siempre activa de los trabajos de transmisión plantea un desafío único cuando se manejan datos de referencia que cambian rápidamente y que se utilizan para enriquecer los flujos de datos dentro del trabajo de ETL de transmisión de AWS Glue. AWS Glue procesa datos en tiempo real de Secuencias de datos de Amazon Kinesis utilizando micro lotes. los foreachbatch
El método utilizado para procesar microlotes maneja un flujo de datos.
Esta publicación propone una solución para enriquecer los datos de transmisión con datos de referencia que cambian con frecuencia en un trabajo de ETL de transmisión de AWS Glue.
Puede enriquecer los flujos de datos cambiando los datos de referencia de las siguientes maneras:
- Lea el conjunto de datos de referencia con cada microlote, lo que puede provocar lecturas redundantes y un aumento de las solicitudes de lectura. Este enfoque es costoso, ineficiente y no se cubre en esta publicación.
- Diseñe un método para decirle al trabajo de transmisión de AWS Glue que los datos de referencia han cambiado y actualícelo solo cuando sea necesario. Este enfoque es rentable y altamente disponible. Recomendamos utilizar este enfoque.
Resumen de la solución
Esta publicación usa DynamoDB Streams para capturar cambios en los datos de referencia, como se ilustra en el siguiente diagrama de arquitectura. Para obtener más información acerca de las secuencias de DynamoDB, consulte Casos de uso y patrones de diseño de secuencias de DynamoDB.
El flujo de trabajo contiene los siguientes pasos:
- Un usuario o aplicación actualiza o crea un nuevo elemento en la tabla de DynamoDB.
- DynamoDB Streams se utiliza para identificar cambios en los datos de referencia.
- Se invoca una función Lambda cada vez que se produce un cambio en los datos de referencia.
- La función Lambda captura el evento que contiene el registro modificado, crea un "archivo de cambios" y lo coloca en un depósito de Amazon S3.
- El trabajo de AWS Glue está diseñado para monitorear la transmisión en busca de este valor en cada microlote. En el momento en que ve el indicador de cambio, AWS Glue inicia una actualización de los datos de DynamoDB antes de procesar más registros en la transmisión.
Esta publicación va acompañada de un Formación en la nube de AWS plantilla que crea recursos como se describe en la arquitectura de la solución:
- Una tabla de DynamoDB llamada
ProductPriority
con algunos elementos cargados - Un depósito de S3 llamado
demo-bucket-<AWS AccountID>
- Dos funciones Lambda:
demo-glue-script-creator-lambda
demo-reference-data-change-handler
- Un flujo de datos de Kinesis denominado
SourceKinesisStream
- Una base de datos de AWS Glue Data Catalog llamada
my-database
- Dos tablas de Data Catalog
- Un trabajo de AWS Glue llamado
demo-glue-job-<AWS AccountID>
. El código para el trabajo de AWS Glue se puede encontrar en este enlace. - Dos Gestión de identidades y accesos de AWS (IAM) funciones:
- Un rol para que las funciones de Lambda accedan a Kinesis, Amazon S3 y DynamoDB Streams
- Un rol para el trabajo de AWS Glue para acceder a Kinesis, Amazon S3 y DynamoDB
- An Generador de datos de Amazon Kinesis (KDG) con un usuario creado a través de Cognito Amazonas para generar un flujo de datos de muestra
Requisitos previos
Para este tutorial, debe tener los siguientes requisitos previos:
- Una cuenta de AWS
- El usuario de IAM debe tener permisos para crear los roles requeridos
- Permiso para crear una pila de CloudFormation y los servicios que detallamos
Cree recursos con AWS CloudFormation
Para implementar la solución, complete los siguientes pasos:
- Elige Pila de lanzamiento:
- Configurar un grupo de usuarios de Amazon Cognito y pruebe si puede acceder a la URL de KDG especificada en la pestaña de salida de la pila. Además, valide si puede iniciar sesión en KDG con las credenciales proporcionadas al crear la pila.
Ahora debería tener los recursos necesarios disponibles en su cuenta de AWS.
- Verifique esta lista con los recursos en la sección de salida de la pila de CloudFormation.
Data de muestra
Los datos de referencia de muestra ya se han cargado en el almacén de datos de referencia. La siguiente captura de pantalla muestra un ejemplo.
La priority
el valor puede cambiar con frecuencia según la hora del día, el día de la semana u otros factores que impulsan la oferta y la demanda.
El objetivo es acomodar estos cambios en los datos de referencia sin problemas en la canalización.
Genere un flujo aleatorio de eventos en Kinesis
A continuación, simulamos un flujo de datos de muestra en Kinesis. Para obtener instrucciones detalladas, consulte Pruebe su solución de transmisión de datos con el nuevo generador de datos de Amazon Kinesis. Para esta publicación, definimos la estructura de los datos de pedidos simulados utilizando una plantilla parametrizada.
- En la consola de KDG, elija la región en la que se encuentra la secuencia de origen de Kinesis.
- Elija su flujo de entrega.
- Introduzca la siguiente plantilla en el campo Plantilla de registro:
- Elige Plantilla de prueba, A continuación, elija Enviar datos.
KDG debería comenzar a enviar un flujo de pedidos generados aleatoriamente al flujo de datos de Kinesis.
Ejecute el trabajo de transmisión de AWS Glue
La pila de CloudFormation creó un trabajo de AWS Glue que lee el flujo de datos de Kinesis a través de una tabla de catálogo de datos, se une a los datos de referencia en DynamoDB y escribe el resultado en un depósito de S3. Para ejecutar el trabajo, complete los siguientes pasos:
- En la consola de AWS Glue, debajo de ETL en el panel de navegación, elija Empleo.
- Seleccione el trabajo
demo-glue-job-<AWS AccountID>
. - En Acciones menú, seleccione Ejecutar trabajo.
Además del enriquecimiento, el trabajo incluye una verificación adicional que monitorea un prefijo de Amazon S3 para un archivo de "Cambio de indicador". Este archivo lo crea la función Lambda, que es invocada por el flujo de DynamoDB cada vez que hay una actualización o un nuevo elemento de referencia.
Investigue los datos de destino en Amazon S3
La siguiente es una captura de pantalla de los datos que se cargan en tiempo real en el item=burger
dividir. La prioridad se fijó en media en los datos de referencia, y las órdenes van a la partición correspondiente.
Actualizar los datos de referencia
Ahora actualizamos la prioridad para burgers
a high
en la tabla de DynamoDB a través de la consola mientras los pedidos se transmiten a la canalización.
Use el siguiente comando para realizar la actualización a través de Amazon CloudShell. Cambie la Región al valor apropiado.
Verifique que los datos se actualizaron.
Navegue a la carpeta S3 de destino para confirmar el contenido. El trabajo de AWS Glue debería haber comenzado a enviar los pedidos de hamburguesas al high
dividir.
La transmisión de DynamoDB invoca la función Lambda y coloca un archivo de "Change Flag" en un depósito de Amazon S3. El trabajo de AWS Glue actualiza los datos de referencia y elimina el archivo para evitar actualizaciones redundantes.
Uso de este patrón para datos de referencia en Amazon S3
Si los datos de referencia se almacenan en un depósito S3, cree un Notificación de eventos de Amazon S3 que identifica cambios en el prefijo donde se almacenan los datos de referencia. La notificación de eventos invoca una función de Lambda que inserta el indicador de cambio en el flujo de datos.
Limpiar
Para evitar incurrir en cargos futuros, elimine los recursos. Puedes hacer esto por eliminando la pila de CloudFormation.
Conclusión
En esta publicación, discutimos enfoques para manejar datos de referencia que cambian rápidamente almacenados en DynamoDB o Amazon S3. Demostramos un caso de uso simple que implementa este patrón.
Tenga en cuenta que DynamoDB Streams escribe registros de transmisión casi en tiempo real. Cuando diseñe su solución, tenga en cuenta un pequeño retraso entre la actualización real en DynamoDB y la escritura en el flujo de DynamoDB.
Acerca de los autores
Jerónimo Rajan es consultor principal de análisis de datos en AWS. Ayuda a los clientes a diseñar y crear soluciones de análisis escalables y migrar canalizaciones de datos y almacenes de datos a la nube. ¡En un universo alternativo, es un campeón mundial de ajedrez!
Ghosal de Dipankar es arquitecto principal en Amazon Web Services y tiene su sede en Minneapolis, MN. Tiene un enfoque en análisis y disfruta ayudar a los clientes a resolver sus casos de uso únicos. Cuando no está trabajando, le encanta ir de excursión con su esposa y su hija.
- Coinsmart. El mejor intercambio de Bitcoin y criptografía de Europa.
- Platoblockchain. Inteligencia del Metaverso Web3. Conocimiento amplificado. ACCESO LIBRE.
- CriptoHawk. Radar de altcoins. Prueba gratis.
- Fuente: https://aws.amazon.com/blogs/big-data/handle-fast- Changing-reference-data-in-an-aws-glue-streaming-etl-job/