Amazon DEA-C01: Transformación y procesamiento de datos — Guía de estudio
Forma parte de la Amazon Data Engineer Associate DEA-C01 — Guía de estudio. Practica con respuestas verificadas en el centro de exámenes de Amazon, o realiza tests cronometrados en ExamRoll.io.
Este dominio cubre los servicios y patrones de AWS utilizados para limpiar, transformar y preparar datos para análisis y ML a escala. Se centra en seleccionar la computación y las herramientas adecuadas (Glue, Lambda, EMR, DataBrew) en función del volumen de datos, los requisitos de latencia y las restricciones de costos. Comprender los límites del servicio, los parámetros de configuración de los trabajos y cómo interactúan los formatos de datos y los catálogos es fundamental para construir canalizaciones fiables e incrementales.
Trabajos de ETL de AWS Glue (Spark y Python shell)
Los trabajos de Spark de Glue son la opción principal para ETL distribuido a gran escala: se ejecutan en Apache Spark gestionado por AWS Glue, usan GlueContext y operan sobre los tipos DynamicFrame y Spark DataFrame. Se configuran a través de la consola o la CLI con el tipo de trabajo “glueetl”, workerType (G.1X, G.2X, G.4X) y NumberOfWorkers; se inician con la CLI: aws glue start-job-run –job-name my-spark-job –arguments ‘–execution-class=STANDARD’. Usa las API de DynamicFrame (create_dynamic_frame.from_options, apply_mapping) cuando necesites transformaciones con esquemas flexibles, transformaciones integradas (Relationalize, Unnest) y manejo automático de datos semiestructurados; conviértelos a Spark DataFrame con dyf.toDF() cuando necesites Spark SQL, uniones de mayor rendimiento o UDF personalizadas.
Los trabajos de Python shell de Glue usan el tipo de trabajo “pythonshell” para scripting ligero y tareas del plano de control. Son de una sola DPU (1 DPU) con paralelismo limitado y son ideales para manipulaciones de archivos pequeños, actualizaciones de metadatos u orquestación. Se configuran mediante aws glue create-job –name my-pyjob –command ‘{“Name”:“pythonshell”,“PythonVersion”:“3”}’ y se inician con aws glue start-job-run. Ten en cuenta que los trabajos de Python shell tienen un límite de 1 DPU; usa Spark para conjuntos de datos grandes.
Los marcadores de trabajo (job bookmarks) de Glue permiten el procesamiento incremental al rastrear objetos y particiones de S3 procesados previamente. Habilita los marcadores en la configuración del trabajo o al iniciar las ejecuciones: aws glue start-job-run –job-name my-job –job-bookmark-option job-bookmark-enable. Los marcadores funcionan para fuentes basadas en S3 que utilizan conectores integrados; las fuentes JDBC no admiten marcadores por defecto y requieren marcas de agua (watermarking) personalizadas o almacenamiento de estado.
Glue ahora admite ExecutionClass FLEX para trabajos optimizados en costos y no urgentes. Inicia con aws glue start-job-run –job-name my-job –execution-class FLEX para permitir que Glue programe el trabajo a un costo menor con SLAs de tiempo de inicio más flexibles. Usa FLEX para rellenos de datos en lote (backfills) y cargas de trabajo no sensibles a la latencia; usa STANDARD para una latencia predecible.
Criterios de decisión — comparaciones rápidas:
-
DynamicFrame vs Spark DataFrame
- Usa DynamicFrame al ingerir JSON/Parquet semiestructurado con deriva de esquema (schema drift), aprovechando apply_mapping, relationalize y las transformaciones de Glue.
- Usa Spark DataFrame cuando necesites el rendimiento de Spark SQL, uniones complejas, funciones de ventana y librerías de Spark de terceros.
- Convierte entre ellos mediante DynamicFrame.fromDF(df, glueContext, “name”) y dyf.toDF().
-
Glue Spark vs Python shell
- Elige Spark para ETL distribuido de múltiples nodos sobre grandes conjuntos de datos y cuando se utiliza la integración con Glue Catalog a escala.
- Elige Python shell para tareas pequeñas y rápidas o pasos de orquestación que se ajustan a 1 DPU.
AWS Lambda para transformaciones ligeras
Lambda es ideal para transformaciones ligeras, de baja latencia e impulsadas por eventos, activadas directamente por S3, Kinesis o EventBridge. Los usos típicos incluyen validación de archivos, extracción de metadatos, conversión de JSON a CSV para archivos pequeños o procesamiento de registros en flujos (streams). Configura la memoria y el tiempo de espera (timeout) con aws lambda update-function-configuration –function-name myFunc –memory-size 2048 –timeout 300. La concurrencia aprovisionada se puede establecer con aws lambda put-provisioned-concurrency-config para mitigar los arranques en frío (cold starts) en canalizaciones de streaming sensibles a la latencia.
Ten en cuenta los límites de Lambda para el procesamiento de datos: 15 minutos de ejecución máxima, 10 GB de memoria (10,240 MB) y solo 512 MB de almacenamiento efímero en /tmp. Para el procesamiento de archivos más grandes, encadena el procesamiento (divide los archivos), transfiérelos a S3 e invoca un trabajo de Glue o EMR, o utiliza el procesamiento en varias partes con AWS Step Functions. Usa variables de entorno para configuraciones pequeñas y políticas de roles de IAM que otorguen estrictamente el privilegio mínimo.
Criterios de decisión — cuándo elegir Lambda:
- Usa Lambda cuando el procesamiento por invocación se ajuste a las restricciones de 15 minutos, 10 GB de memoria y 512 MB en /tmp, y cuando se requiera una latencia de subsegundos a segundos.
- Evita usar Lambda para transformaciones grandes, de larga duración o con un uso intensivo de memoria; en su lugar, utiliza Glue Spark o EMR.
Amazon EMR para procesamiento a gran escala
EMR es la solución ideal para el procesamiento de big data personalizable y a gran escala (Spark, Hadoop, Presto, Flink) donde se requiere control a nivel de clúster, acciones de arranque personalizadas (bootstrap actions) o bibliotecas especializadas. Los clústeres se crean mediante la CLI con aws emr create-cluster y se puede elegir entre –instance-groups o –instance-fleets. Las flotas de instancias (Instance fleets) proporcionan mezclas flexibles de tipos de instancia y combinaciones de instancias spot y bajo demanda; los grupos de instancias (instance groups) son grupos más simples y de tamaño fijo.
Patrones de clústeres de EMR a considerar:
- Clústeres transitorios: inícielos con –auto-terminate y envíe pasos para que el clúster finalice cuando los pasos se completen. Es una buena opción para el control de costos, pero el estado local y el HDFS efímero se perderán al terminar.
- Clústeres de larga duración: no finalizan automáticamente; úselos para cargas de trabajo interactivas, HDFS persistente o cuando muchos trabajos pequeños se benefician del calentamiento de la JVM. Persista los datos críticos en S3 o en almacenamiento Hadoop respaldado por EBS si se espera la finalización del clúster.
Ejemplos de configuración:
- CLI para grupo de instancias: aws emr create-cluster –name Prod –release-label emr-6.6.0 –use-default-roles –instance-groups InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=4
- La CLI para flota de instancias utiliza –instance-fleets con asignaciones OnDemand/Spot y múltiples tipos de instancia para resiliencia y optimización de costos.
Use EMR cuando necesite control total sobre los componentes del ecosistema Hadoop, scripts de arranque personalizados o HDFS persistente para datos intermedios; de lo contrario, Glue Spark es más simple para ETL de Spark administrado que se integra con el Glue Data Catalog.
Glue DataBrew y transformaciones visuales
Glue DataBrew es una herramienta visual, sin código o con poco código (no-code/low-code), para el perfilado, la limpieza y la transformación de datos, dirigida a analistas e ingenieros de datos que trabajan de forma interactiva. Cree un conjunto de datos desde S3 o el Glue Catalog, construya una receta de transformaciones en la consola, previsualice sobre una muestra y ejecute trabajos para aplicar las recetas a escala. Programe trabajos de DataBrew o ejecútelos mediante la CLI con aws databrew start-job-run –name my-databrew-job.
DataBrew está optimizado para tareas de preparación de datos como estandarización, deduplicación, conversión de tipos y transformaciones a nivel de columna con funciones integradas. Se integra con el Glue Catalog y escribe los resultados en S3. Elija DataBrew cuando los usuarios de negocio necesiten autogestión para la limpieza y el perfilado rápido de datos; para lógica de transformación pesada, uniones complejas o conjuntos de datos muy grandes, prefiera Glue Spark o EMR.
Comparación de transformaciones visuales vs. basadas en código:
- Glue DataBrew
- Pros: perfilado rápido, basado en recetas, usuarios sin conocimientos de código pueden crear pipelines, programación integrada.
- Contras: no es adecuado para uniones distribuidas muy grandes o muy complejas ni para bibliotecas personalizadas.
- Glue Spark / EMR
- Pros: control programático total, maneja conjuntos de datos masivos, admite bibliotecas de terceros.
- Contras: requiere habilidades de desarrollador y más configuración.
Errores Comunes y Criterios de Decisión
- Asumir que los Glue job bookmarks funcionan para fuentes JDBC: los marcadores solo rastrean el estado de los objetos/particiones de S3; para cargas incrementales desde JDBC, use columnas de marca de agua (watermark columns), captura de datos de cambios (change-data-capture) o almacene el progreso en DynamoDB/S3.
- Tratar los clústeres transitorios de EMR como sistemas con estado: los clústeres transitorios finalizan después de los pasos y pierden el HDFS; persista los datos intermedios en S3 o use volúmenes de EBS para un almacenamiento duradero.
- Ignorar los arranques en frío (cold starts) de Lambda en pipelines de streaming: los arranques en frío aumentan la latencia; mitíguelos con concurrencia aprovisionada (provisioned concurrency) para rutas críticas o use cómputo de larga duración para requisitos estrictos de baja latencia.
- Ejecutar transformaciones grandes en Glue Python shell: los trabajos de Python shell están limitados a 1 DPU; para conjuntos de datos grandes, use trabajos de Glue Spark con los workerType/NumberOfWorkers apropiados.
- Configurar incorrectamente los tipos de instancia de EMR: elija flotas de instancias (instance fleets) para obtener costos y flexibilidad con instancias spot; use grupos de instancias (instance groups) cuando necesite una composición de instancias predecible.
- Usar en exceso Glue Flex para cargas de trabajo urgentes: FLEX reduce el costo pero puede retrasar los tiempos de inicio; use STANDARD para tiempos de inicio y ejecución predecibles.
Problema Práctico: Escenario de Caso de Uso
AcmeRetail procesa archivos Parquet de clickstream nocturnos para consolidarlos en una tabla unificada de actividad del cliente y desea un procesamiento incremental para evitar reprocesar meses de datos, manteniendo bajos los costos para las cargas históricas no urgentes.
- Usar un diseño particionado en S3 (year=/month=/day=) y registrar el conjunto de datos en el Glue Data Catalog.
- Crear un trabajo de Glue Spark (glueetl) que lea con DynamicFrame.from_catalog para obtener flexibilidad de esquema, aplique mapeos, convierta a DataFrame para uniones complejas y escriba el resultado como Parquet particionado de nuevo en S3.
- Habilitar los Glue job bookmarks (job-bookmark-enable) para las ejecuciones nocturnas para procesar solo las particiones nuevas; para las fuentes de enriquecimiento JDBC, implementar columnas de marca de agua (watermark) persistidas en DynamoDB para rastrear la marca de tiempo máxima procesada.
- Para las ejecuciones nocturnas de rutina, usar ExecutionClass=STANDARD; para el reprocesamiento histórico no urgente, enviar ejecuciones con –execution-class FLEX para ahorrar costos.
- Monitorear con métricas de CloudWatch y configurar alarmas para fallos en los trabajos; para una escala muy grande o bibliotecas personalizadas, considere clústeres transitorios de EMR que escriban resultados intermedios en S3 y finalicen automáticamente.
Justificación: Este enfoque aprovecha el Spark administrado de Glue para transformaciones escalables y los DynamicFrames para entradas semiestructuradas, utiliza job bookmarks para el procesamiento incremental de S3 y usa FLEX para reducir el costo de las cargas históricas, conservando así el costo, la fiabilidad y la simplicidad operativa.
← Catalogación de datos y gestión de metadatos · Todos los dominios · Orquestación de datos y gestión de flujos de trabajo →
Practica estas preguntas → · Práctica cronometrada en ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Aprueba tu examen →