AWS GlueTransmisión de
La transmisión de AWS Glue, un componente de AWS Glue, le permite gestionar de manera eficiente los datos de transmisión casi en tiempo real, lo que le da la posibilidad de llevar a cabo tareas cruciales como la ingesta de datos, el procesamiento y el machine learning. Mediante el uso del marco de transmisión de Apache Spark, la transmisión de AWS Glue proporciona un servicio sin servidor que puede gestionar datos de transmisión a gran escala. AWS Glue proporciona varias optimizaciones además de Apache Spark, como la infraestructura sin servidor, el escalado automático, el desarrollo visual de los trabajos, los cuadernos instantáneos para los trabajos de transmisión y otras mejoras de rendimiento.
Casos de uso de la transmisión
Algunos casos de uso comunes para la transmisión de AWS Glue son los siguientes:
Procesamiento de datos casi en tiempo real: la transmisión de AWS Glue permite a las organizaciones procesar los datos de transmisión casi en tiempo real, lo que les da la posibilidad de obtener información y tomar decisiones oportunas en función de la información más reciente.
Detección de fraudes: puede usar la transmisión de AWS Glue para analizar en tiempo real los datos de transmisión, lo que lo convierte en una herramienta valiosa para detectar actividades fraudulentas, como el fraude con tarjetas de crédito, la intrusión en la red o las estafas en línea. Al procesar y analizar continuamente los datos entrantes, puede identificar rápidamente patrones o anomalías sospechosos.
Análisis de redes sociales: la transmisión de AWS Glue puede procesar datos de redes sociales en tiempo real, como tuits, publicaciones o comentarios, lo que permite a las organizaciones supervisar las tendencias, analizar las opiniones y gestionar la reputación de la marca en tiempo real.
Análisis del Internet de las cosas (IoT): la transmisión de AWS Glue es adecuado para gestionar y analizar los flujos de datos de alta velocidad que se generan en dispositivos, sensores y maquinaria conectada de IoT. Permite la supervisión en tiempo real, la detección de anomalías, el mantenimiento predictivo y otros casos de uso de análisis de IoT.
Análisis del flujo de clics: la transmisión de AWS Glue puede procesar y analizar los datos del flujo de clics procedentes de sitios web o aplicaciones móviles en tiempo real. Esto permite a las empresas obtener información acerca del comportamiento de los usuarios, personalizar las experiencias de los usuarios y optimizar las campañas de marketing según los datos del flujo de clics en tiempo real.
Supervisión y análisis de registros: la transmisión de AWS Glue puede procesar y analizar de manera continua los datos del registro de servidores, aplicaciones o dispositivos de red en tiempo real. Esto ayuda a detectar anomalías, solucionar problemas y supervisar el estado y el rendimiento del sistema.
Sistemas de recomendación: la transmisión de AWS Glue puede procesar los datos de actividad de los usuarios en tiempo real y actualizar los modelos de recomendación de forma dinámica. Esto permite realizar recomendaciones personalizadas y en tiempo real en función del comportamiento y las preferencias de los usuarios.
Estos son algunos ejemplos de la amplia gama de casos de uso en los que se puede aplicar la transmisión de AWS Glue. Su integración con el ecosistema de AWS y los servicios administrados lo convierten en una opción práctica para el procesamiento y el análisis de flujos en tiempo real en la nube.
¿Cuáles son los beneficios de usar la transmisión de AWS Glue?
Los beneficios de usar la transmisión de AWS Glue son los siguientes:
Trabajo sin servidor: la transmisión de AWS Glue no tiene servidores, lo que elimina la necesidad de administrar la infraestructura. Esto reduce la sobrecarga operativa y permite a los usuarios centrarse en el procesamiento de datos y las tareas de análisis en lugar de la administración de la infraestructura.
Escalado automático: la transmisión de AWS Glue proporciona capacidades de escalado automático, que ajustan dinámicamente la capacidad de procesamiento en función de la carga de trabajo. Se escala o reduce horizontalmente de manera automática para gestionar las fluctuaciones en el volumen de datos, lo que garantiza un rendimiento y un uso de los recursos óptimos.
Desarrollo visual: el desarrollo de trabajos de transmisión puede resultar complejo. La transmisión de AWS Glue aborda este desafío al ofrecer AWS Glue Studio, una herramienta de creación visual. AWS Glue Studio simplifica el proceso de creación de flujos de trabajo de transmisión y permite a los desarrolladores diseñar y gestionar aplicaciones de transmisión de forma visual, lo que reduce la curva de aprendizaje y aumenta la productividad.
Rentabilidad: al ser un servicio sin servidor, la transmisión de AWS Glue ofrece rentabilidad al eliminar la necesidad de aprovisionar y mantener la infraestructura. A los usuarios se les factura en función de los recursos consumidos durante la ejecución de los trabajos de transmisión, lo que permite optimizar los costos y escalarlos en función del uso real.
Gestión de cargas de trabajo complejas: la transmisión de AWS Glue está diseñado para gestionar cargas de trabajo de transmisión complejas. Puede procesar y analizar grandes volúmenes de datos en tiempo real, soportar transformaciones avanzadas e integrarse con otros servicios de AWS, lo que da lugar a canalizaciones de datos de transmisión y flujos de trabajo analíticos sofisticados.
Independencia: la transmisión de AWS Glue proporciona flexibilidad y evita la dependencia de un proveedor. Los usuarios pueden aprovechar la transmisión de AWS Glue como parte de un ecosistema de AWS más amplio, ya que pueden integrarlo con otros servicios de AWS sin problemas. Esto permite una fácil integración con los orígenes de datos, las aplicaciones y los servicios existentes sin estar atados a una tecnología o plataforma específica.
¿Cuándo conviene usar la transmisión de AWS Glue?
Hay muchas opciones en lo que respecta a los casos de uso de la transmisión. Recomendamos el uso de la transmisión de AWS Glue en las siguientes situaciones:
Si ya usa AWS Glue o Spark para el procesamiento por lotes, la transmisión de AWS Glue es la opción ideal para usted. Proporciona una transición perfecta a la creación de trabajos de transmisión sin necesidad de aprender un nuevo lenguaje o marco. Al aprovechar los conocimientos y la infraestructura existentes, la transmisión de AWS Glue simplifica el proceso de desarrollo de trabajos y le permite ampliar fácilmente sus capacidades de procesamiento de datos a escenarios de transmisión en tiempo real.
Si necesita un servicio o producto unificado para gestionar las cargas de trabajo por lotes, de transmisión y basadas en eventos, la transmisión de AWS Glue es la solución para usted. Con la transmisión de AWS Glue, puede consolidar sus necesidades de procesamiento de datos en un único marco, lo que elimina la complejidad de administrar varios sistemas. Esto permite el desarrollo y el mantenimiento eficientes de diversos flujos de trabajo de datos y, al mismo tiempo, garantiza la coherencia y la compatibilidad entre los diferentes tipos de carga de trabajo.
La transmisión de AWS Glue es adecuado para escenarios que implican volúmenes de datos de transmisión extremadamente grandes y transformaciones complejas, como uniones entre flujos o bases de datos relacionales. Puede procesar y analizar flujos de datos masivos de manera eficiente, lo que le permite abordar cargas de trabajo exigentes con facilidad. Tanto si se trata de una ingesta de datos de alta velocidad como de una manipulación de datos compleja, la escalabilidad y las capacidades de procesamiento avanzadas de la transmisión de AWS Glue garantizan un rendimiento óptimo y unos resultados precisos.
Si prefiere un enfoque visual para crear trabajos de transmisión, AWS Glue ofrece AWS Glue Studio, con el que puede diseñar y gestionar visualmente las aplicaciones de transmisión, lo que simplifica el proceso de desarrollo. Esta interfaz intuitiva permite a los desarrolladores crear, configurar y supervisar los flujos de trabajo de transmisión mediante una interfaz visual, lo que reduce la curva de aprendizaje y aumenta la productividad.
La transmisión de AWS Glue es una excelente opción para casos de uso casi en tiempo real en los que existen acuerdos de nivel de servicio (SLA) estrictos que duran más de 10 segundos.
Si desea crear un lago de datos transaccional con Apache Iceberg, Apache Hudi o Delta Lake, la transmisión de AWS Glue ofrece soporte nativo para estos formatos de tabla abiertos. Esta perfecta integración le permite procesar los datos de transmisión directamente desde estos lagos de datos transaccionales, lo que garantiza la coherencia, integridad y compatibilidad de los datos.
Si necesita ingerir datos de transmisión para una variedad de destinos de datos, la transmisión de AWS Glue proporciona destinos nativos a una variedad de destinos de datos como Amazon Redshift, Amazon RDS, Amazon Aurora, Oracle, SQL Server y otros destinos.
Orígenes de datos admitidos
AWS GlueLa transmisión de admite los siguientes orígenes de datos:
Amazon Kinesis
Amazon MSK (Managed Streaming para Apache Kafka)
Apache Kafka autoadministrado
Destinos de datos admitidos
AWS GlueLa transmisión de admite una variedad de destinos de datos, como los siguientes:
Destinos de datos compatibles con el Catálogo de datos de AWS Glue
Amazon S3
Amazon Redshift
MySQL
PostgreSQL
Oracle
Microsoft SQL Server
Snowflake
Cualquier base de datos a la que se pueda conectar mediante JDBC
Apache Iceberg, Delta y Apache Hudi
AWS GlueConectores del Marketplace
Activación del modo en tiempo real para trabajos de transmisión
El modo en tiempo real (RTM) es un nuevo modelo de ejecución para Spark Structured Streaming disponible en AWS Glue 6.0. RTM reduce la latencia de extremo a extremo de segundos o minutos a menos de un segundo. El modo en tiempo real solo se aplica a los trabajos de Spark Structured Streaming. No se aplica a los trabajos antiguos de Spark Streaming (DStreams) ni a otros tipos de trabajos.
RTM usa Trigger.RealTime. Las tareas se ejecutan de forma continua dentro de un intervalo de lotes (por defecto, 5 minutos) y procesan los registros a medida que llegan en lugar de acumular datos a intervalos. Esto difiere del modelo de microlotes predeterminado, en el que forEachBatch/Trigger.ProcessingTime sondea, procesa, confirma y reinicia las tareas en cada intervalo.
importante
RTM requiere una suscripción explícita mediante un argumento de trabajo. Si no hay suficientes espacios de tareas para cubrir todas las particiones de origen, RTM descarta silenciosamente las particiones no asignadas. Debe aprovisionar suficientes trabajadores para cubrir todas las particiones de Kafka.
Requisitos previos
Antes de activar el modo en tiempo real, confirme que su trabajo cumpla los siguientes requisitos:
-
Versión 6.0 de AWS Glue
-
El trabajo debe usar Spark Structured Streaming. El modo en tiempo real no se aplica a los trabajos antiguos de Spark Streaming (DStreams) ni a otros tipos de trabajos.
-
El tipo de trabajo debe ser Spark Streaming (comando
gluestreaming) -
El lenguaje del trabajo debe ser Scala (
--job-language scala). La compatibilidad de RTM con PySpark no estará disponible hasta Spark 4.2. -
Solo orígenes de Kafka. Amazon Kinesis no es compatible con RTM en AWS Glue 6.0.
-
Solo operaciones sin estado (seleccionar, filtrar, proyectar, asignar). No se admiten las operaciones con estado, como las agregaciones, las uniones, la deduplicación y las operaciones en ventanas.
-
El modo de salida debe ser Actualizar. El modo de anexión no es compatible con RTM.
-
El escalado automático no es compatible con el modo en tiempo real. No habilite el escalado automático para los trabajos de RTM. Configure un número fijo de trabajadores suficiente para cubrir todas las particiones de Kafka del tema de origen.
Cuándo usar el modo en tiempo real
El modo en tiempo real está diseñado para una clase específica de cargas de trabajo de transmisión. Considere usar el modo en tiempo real cuando:
-
Necesite una latencia de extremo a extremo inferior a un segundo y la latencia de microlotes (de 1 a 2 segundos o más) sea demasiado alta para su caso de uso.
-
Su canalización realice transformaciones sin estado, como filtrar, proyectar, enriquecer o enrutar registros de Kafka a Kafka o a otro receptor.
-
Tenga un número fijo y predecible de particiones de Kafka y pueda aprovisionar los trabajadores en consecuencia.
-
Sus trabajos estén escritos en Scala.
Siga utilizando el modo de microlotes cuando:
-
Necesite operaciones con estado, como agregaciones, uniones, deduplicación o cálculos en periodos.
-
Utilice Amazon Kinesis como origen.
-
Escriba trabajos en PySpark.
-
Confíe en el escalado automático para gestionar volúmenes de datos de variables.
-
Utilice la API de transmisión
forEachBatcho GlueContext. -
La latencia de nivel de segundos es aceptable para su caso de uso.
Funcionamiento del modo en tiempo real
A continuación se describe la diferencia entre el modelo de microlotes y el modo en tiempo real:
- Modo de microlotes
-
Cada intervalo inicia tareas, lee los datos acumulados, procesa los datos, confirma el punto de control, finaliza las tareas y se repite. La latencia mínima es de aproximadamente 1-2 segundos.
- Modo en tiempo real
-
Las tareas se inician una vez y se ejecutan durante la duración de
batchDurationMs(de forma predeterminada, 5 minutos). Las tareas procesan los registros a medida que llegan, con una latencia inferior a un segundo. Al llegar el plazo, las tareas se detienen de forma cooperativa. El controlador confirma el punto de control y el siguiente lote reinicia las tareas.
Ambos modos utilizan el mismo formato de punto de control y el mismo mecanismo de recuperación. La diferencia clave es la duración de la tarea. El modo de microlotes finaliza y vuelve a lanzar las tareas en cada intervalo. El modo en tiempo real permite que las tareas se ejecuten de forma continua dentro de un intervalo de lotes más largo.
importante
Si no hay suficientes espacios de tareas para procesar todas las particiones de origen, RTM descarta silenciosamente las particiones no asignadas. Asegúrese de aprovisionar suficientes trabajadores para cubrir todas las particiones.
Activación del modo en tiempo real
Para activar el modo en tiempo real, establezca el argumento de trabajo --enable-real-time-mode en true. Puede establecer este argumento en la consola de AWS Glue o mediante la API.
Activación del modo en tiempo real (consola)
-
Abra la consola de AWS Glue
y abra su trabajo de transmisión. -
Elija la pestaña Detalles del trabajo.
-
En Versión de Glue, seleccione Glue 6.0. En Tipo, seleccione Spark Streaming.
-
Desplácese hasta la sección Parámetros del trabajo.
-
Elija Agregar parámetro nuevo.
-
En Clave, escriba
--enable-real-time-mode. En Valor, introduzcatrue. -
Seleccione Save.
nota
Los guiones iniciales son obligatorios. Parámetros del trabajo es la vista de consola de DefaultArguments.
Activación del modo en tiempo real (API)
La marca --enable-real-time-mode se almacena en el mapa DefaultArguments de la definición del trabajo. Puede configurarla al crear o actualizar un trabajo.
Creación de un nuevo trabajo (AWS CLI)
Use el siguiente comando:
aws glue create-job \ --name my-rtm-job \ --role arn:aws:iam::123456789012:role/MyGlueRole \ --glue-version 6.0 \ --worker-type G.1X --number-of-workers 4 \ --command '{"Name":"gluestreaming","ScriptLocation":"s3://my-bucket/scripts/rtm-job.scala"}' \ --default-arguments '{ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/" }' \ --region us-east-2
Creación de un nuevo trabajo (boto3)
Utilice el siguiente código:
import boto3 glue = boto3.client("glue", region_name="us-east-2") glue.create_job( Name="my-rtm-job", Role="arn:aws:iam::123456789012:role/MyGlueRole", GlueVersion="6.0", WorkerType="G.1X", NumberOfWorkers=4, Command={ "Name": "gluestreaming", "ScriptLocation": "s3://my-bucket/scripts/rtm-job.scala", }, DefaultArguments={ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/", }, )
Actualización de un trabajo existente (AWS CLI)
Use el siguiente comando:
aws glue update-job \ --job-name my-existing-job \ --job-update '{ "GlueVersion": "6.0", "DefaultArguments": { "--enable-real-time-mode": "true", "--job-language": "scala" } }'
Escritura del script de transmisión
El argumento del trabajo declara la intención de utilizar el modo en tiempo real. El script selecciona el activador.
En el siguiente ejemplo de Scala se muestra una consulta de transmisión que utiliza Trigger.RealTime:
import org.apache.spark.sql.streaming.Trigger val query = df.writeStream .format("kafka") .outputMode("update") .trigger(Trigger.RealTime(60000L)) // checkpoint interval in milliseconds .start() query.awaitTermination()
Trigger.RealTime toma un intervalo de punto de control en milisegundos. El modo de salida de actualización es obligatorio. El modo de anexión genera OUTPUT_MODE_NOT_SUPPORTED.
Puede mezclar modos en un script siempre y cuando la marca esté definida:
dfA.writeStream.outputMode("update").trigger(Trigger.RealTime(60000L)).start() dfB.writeStream.outputMode("append").trigger(Trigger.ProcessingTime("30 seconds")).start()
Comportamiento cuando falta la marca
A continuación se describe cómo se comporta el trabajo cuando la marca --enable-real-time-mode no está establecida:
-
Un trabajo que inicia una consulta en tiempo real sin la marca
--enable-real-time-modefalla al inicio de la consulta. El mensaje de error le indica que agregue el argumento. -
La ausencia de esta marca nunca afecta a los trabajos que solo se realizan en microlotes.
-
Los trabajos que establecen la marca pero que solo utilizan consultas por microlotes tampoco se ven afectados.
Consideraciones y limitaciones
Cuando utilice el modo en tiempo real, tenga en cuenta lo siguiente:
- Anulaciones de particiones
-
Si no hay suficientes espacios de tareas para cubrir todas las particiones de origen, las particiones no asignadas no se procesarán. Aprovisione trabajadores para cubrir todas las particiones de Kafka.
- Sin escalado automático
-
No habilite el escalado automático para los trabajos en modo de tiempo real. El escalado automático no es compatible con RTM e introduce una latencia que contrarresta las ventajas de la baja latencia. Aprovisione un número fijo de trabajadores igual o superior al número de particiones de Kafka del tema de origen.
- Solo Kafka
-
El origen de Amazon Kinesis no es compatible con RTM en AWS Glue 6.0.
- Solo Scala
-
PySpark no es compatible con RTM hasta Spark 4.2.
- Solo sin estado
-
No se admiten las agregaciones, las uniones, la deduplicación, las operaciones en periodos ni
transformWithState. - Incompatible con forEachBatch
-
RTM no utiliza el modelo
forEachBatch. UsewriteStreamconTrigger.RealTimedirectamente. - Recuperación de puntos de control
-
Al reiniciar el trabajo, RTM recupera el último punto de control. Los puntos de control se producen cada
batchDurationMs. En el peor de los casos, el reprocesamiento es la duración de un periodo del lote (semántica de al menos una vez).