Introducción

Hasta ahora, los equipos de datos que usaban Amazon SageMaker para notebooks y análisis interactivos tenían que elegir entre diferentes runtimes de Spark según el caso de uso. Con la llegada de EMR Serverless como runtime soportado en SageMaker Unified Studio, los ingenieros de datos y analistas ganan flexibilidad para ejecutar PySpark y Spark SQL sin configurar y mantener clústeres de Spark. Esto elimina una de las fricciones más comunes en entornos de desarrollo de datos: la dependencia de configuraciones estáticas o soluciones híbridas complejas.

La novedad no es solo un feature adicional, sino un cambio en cómo se estructura el flujo de trabajo. Antes, si un equipo quería escalar un análisis interactivo hacia un pipeline de producción, debía migrar el código a un entorno diferente (por ejemplo, EMR en clústeres gestionados o AWS Glue). Ahora, ese mismo notebook puede ejecutarse en EMR Serverless con una selección de runtime desde el panel lateral del notebook, manteniendo coherencia entre celdas de Python y SQL.

Qué ocurrió

Amazon anunció en junio de 2026 que SageMaker Unified Studio Notebooks ahora soporta EMR Serverless como runtime de Spark, complementando la opción existente de Athena Spark. La integración permite:

  1. Selección dinámica del runtime: Desde el panel lateral del notebook, los usuarios eligen entre Athena Spark o EMR Serverless para todas las celdas (Python o SQL).
  2. Ejecución de PySpark y Spark SQL: Los notebooks pueden ejecutar código PySpark directamente en celdas de Python, y consultas Spark SQL en celdas SQL, usando el runtime seleccionado.
  3. Asistente de código con IA: SageMaker Data Agent (el asistente integrado) genera código y planes de ejecución a partir de prompts en lenguaje natural, acelerando el desarrollo con EMR Serverless.
  4. Capacidad preinicializada: Para reducir el tiempo de inicio de sesiones, se puede configurar capacidad preinicializada en EMR Serverless.
  5. Monitorización unificada: SageMaker Unified Studio muestra un Spark UI consolidado para todos los runtimes soportados, permitiendo visualizar métricas de ejecución y rendimiento en un solo lugar.
  6. Conectividad VPC: EMR Serverless soporta workloads en redes aisladas mediante VPC, algo crítico para entornos con requisitos de seguridad estrictos.

La integración está disponible en todas las regiones de AWS donde SageMaker Unified Studio está desplegado, abarcando tanto notebooks de SageMaker Unified Studio como entornos JupyterLab IDE.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps e Infraestructura

La principal ventaja operativa es la reducción de complejidad en la gestión de runtimes de Spark. Antes, los equipos debían:

  • Mantener clústeres de EMR o Glue para workloads intermedios.
  • Configurar conexiones entre SageMaker y estos entornos (IAM roles, políticas de red, etc.).
  • Gestionar versiones de Spark y sus dependencias en múltiples plataformas.

Con esta integración, la infraestructura de Spark se simplifica: EMR Serverless elimina la necesidad de aprovisionar clústeres manualmente, ya que el servicio escala automáticamente según la carga. Además, la monitorización unificada (Spark UI) reduce la fragmentación de herramientas: los equipos no necesitan saltar entre consolas de SageMaker, EMR y Athena para diagnosticar problemas.

Datos clave:
  • Tiempo de inicio de sesiones: Con capacidad preinicializada, el tiempo de espera para iniciar un notebook con EMR Serverless puede reducirse de minutos a segundos (según pruebas internas de AWS, hasta un 70% más rápido en comparación con clústeres tradicionales).
  • Costos: EMR Serverless cobra por segundo de ejecución de vCPU y memoria, lo que puede ser más económico que mantener clústeres siempre activos para workloads intermitentes. Para workloads de 2 horas/semana, el ahorro puede superar el 40% frente a un clúster de EMR con 3 nodos (basado en AWS Pricing Calculator).

Para equipos de Seguridad

La integración introduce VPC Connectivity en EMR Serverless, lo que permite:

  • Ejecutar workloads en subredes privadas sin exponer endpoints públicos.
  • Aplicar políticas de seguridad granulares mediante Security Groups y NACLs.
  • Cumplir con requisitos de auditoría (por ejemplo, logs de VPC Flow en CloudTrail).
Riesgos mitigados:
  • Exposición de datos en tránsito: Al ejecutar en VPC, el tráfico de Spark se mantiene dentro de la red privada de AWS.
  • Control de acceso: Los IAM roles definidos en SageMaker se propagan automáticamente a EMR Serverless, evitando configuraciones duplicadas.

Para equipos de Cloud

La integración refuerza la estrategia de multi-engine en AWS, permitiendo:

  • Selección dinámica de runtime: Los equipos pueden cambiar entre Athena Spark y EMR Serverless sin reescribir código, optimizando costos según el workload.
  • Unified Spark UI: Una sola consola para monitorear jobs en diferentes runtimes, reduciendo la curva de aprendizaje y evitando la fragmentación de herramientas.
  • Escalabilidad automática: EMR Serverless ajusta recursos en tiempo real, eliminando la necesidad de planificar capacidad para picos de carga.
Ejemplo de impacto:

Un equipo de datos que ejecuta un notebook con 10 GB de datos puede:

  1. Usar Athena Spark para consultas ad-hoc (costo bajo, pero velocidad limitada por Athena).
  2. Cambiar a EMR Serverless para un ETL interactivo (mayor rendimiento, pero costo por segundo de ejecución).
  3. Volver a Athena Spark para validación, sin cambiar el notebook.

Detalles técnicos

Componentes involucrados

ComponenteVersión mínimaRol
SageMaker Unified Studio3.12+Interfaz para notebooks y selección de runtime.
EMR Serverless6.15+Runtime de Spark escalable sin gestión de clústeres.
Apache Spark3.5.0Motor de procesamiento soportado por EMR Serverless.
AWS SDK3.450.0+Librerías para integración entre SageMaker y EMR Serverless.
SageMaker Data Agent2.1.0+Asistente de IA para generación de código y planes de ejecución.
### Requisitos previos
  1. Región compatible: La integración está disponible en todas las regiones donde SageMaker Unified Studio está desplegado (ver lista completa en AWS Regional Services).
  2. Permisos de IAM: El rol del usuario de SageMaker debe tener permisos para:
emr-serverless:GetApplication

sagemaker:CreateProcessingJob

s3:GetObject (si se usan datos en S3).

  1. Red: Para usar VPC Connectivity, el clúster de EMR Serverless debe desplegarse en una subred con salida a internet (para descargar imágenes de contenedores) o configurar un NAT Gateway para acceso privado.

Configuración mínima para probar la integración

  1. Crear un notebook en SageMaker Unified Studio:
   # Ejemplo de celda Python para probar EMR Serverless
   from pyspark.sql import SparkSession

   spark = SparkSession.builder \
       .appName("EMRServerlessTest") \
       .config("spark.jars.packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.5.0") \
       .getOrCreate()

   df = spark.read.format("parquet").load("s3://tu-bucket/datos/")
   df.show()
   
  1. Seleccionar runtime en el panel lateral:
– Abrir el notebook y hacer clic en el ícono de «Spark Runtime» en el panel derecho.

– Elegir EMR Serverless y configurar:

Application name: sagemaker-emr-serverless

Initial capacity: 1 vCPU, 4 GB (ajustar según workload)

VPC settings: Seleccionar subred y Security Group (opcional, para aislamiento de red).

  1. Ejecutar el notebook:
– SageMaker lanzará automáticamente un EMR Serverless Application con Spark 3.5.0.

– Los logs y métricas aparecerán en el Spark UI unificado dentro de SageMaker.

Limitaciones conocidas

  • Cold start: Aunque EMR Serverless mejora los tiempos de inicio con capacidad preinicializada, el primer cold start puede tomar 30-60 segundos (AWS recomienda configurar capacidad mínima para evitar este retraso).
  • Dependencias: Algunas librerías de Spark (como spark-xml o spark-avro) deben empaquetarse en el notebook o en un bucket S3 accesible.
  • Tamaño de datos: Para workloads con datasets >1 TB, Athena Spark puede seguir siendo más económico, ya que EMR Serverless tiene un límite de 16 vCPUs por aplicación.

Qué deberían hacer los administradores y equipos técnicos

1. Actualizar SageMaker Unified Studio y configurar EMR Serverless

Pasos accionables:
  1. Verificar la versión de SageMaker:
   aws sagemaker list-notebook-instances --query "NotebookInstances[?contains(NotebookInstanceName, 'unified')].NotebookInstanceStatus" --region us-east-1
   

– Requerido: versión 3.12 o superior.

  1. Actualizar el rol IAM del usuario:
   # Agregar permisos para EMR Serverless
   aws iam attach-role-policy --role-name SageMakerExecutionRole --policy-arn arn:aws:iam::aws:policy/AmazonEMRServerlessFullAccess
   
  1. Configurar un EMR Serverless Application para SageMaker:
   aws emr-serverless create-application \
       --name sagemaker-emr-serverless \
       --release-label emr-6.15.0 \
       --initial-capacity '{ "DRIVER": { "weight": 1, "capacity": { "vCPU": 2, "memory": "4 GB" } }, "EXECUTOR": { "weight": 3, "capacity": { "vCPU": 4, "memory": "8 GB" } } }' \
       --region us-east-1
   

2. Migrar workloads existentes a EMR Serverless

Estrategia recomendada:
  1. Identificar notebooks con workloads intensivos en CPU/memoria:
– Buscar celdas con %%spark o %spark.sql que consuman >1 GB de datos.

– Usar SageMaker Studio Analytics para identificar notebooks con alta latencia.

  1. Modificar el notebook para soportar EMR Serverless:
   # Ejemplo: notebook compatible con Athena Spark y EMR Serverless
   import sagemaker_spark

   # Seleccionar runtime dinámicamente (Athena o EMR)
   runtime = "emr-serverless"  # Alternativa: "athena-spark"

   # Configurar Spark Session según el runtime
   if runtime == "emr-serverless":
       spark = SparkSession.builder \
           .appName("EMRServerlessETL") \
           .config("spark.executor.instances", "3") \
           .getOrCreate()
   else:
       spark = SparkSession.builder \
           .appName("AthenaSparkETL") \
           .config("spark.sql.catalogImplementation", "hive") \
           .getOrCreate()
   
  1. Validar costos y rendimiento:
– Comparar el costo por ejecución entre Athena Spark y EMR Serverless usando:
     aws emr-serverless get-application --application-id <app-id> --query "application.status.metrics"
     

– Usar Amazon CloudWatch Metrics para monitorear:

EMRServerless/Application/CPUUtilization

EMRServerless/Application/MemoryUtilization

3. Configurar monitorización unificada

Pasos:
  1. Habilitar Spark UI en SageMaker:
   # Configuración en el notebook (opcional)
   %%configure -f
   {
     "SparkEventLog": "enabled",
     "SparkUI": "enabled"
   }
   
  1. Acceder al Spark UI consolidado:
– Ir a SageMaker Studio > Notebooks > [Nombre del notebook] > Spark UI.

– Filtrar por runtime (emr-serverless o athena-spark) para comparar métricas.

  1. Configurar alertas en CloudWatch:
   # Alerta para alta latencia en EMR Serverless
   aws cloudwatch put-metric-alarm \
       --alarm-name "EMRServerless-High-Latency" \
       --metric-name "Duration" \
       --namespace "AWS/EMRServerless" \
       --statistic "Average" \
       --period 300 \
       --threshold 300 \
       --comparison-operator "GreaterThanThreshold" \
       --evaluation-periods 2 \
       --alarm-actions "arn:aws:sns:us-east-1:123456789012:AlertTopic"
   

4. Implementar VPC Connectivity para workloads sensibles

Configuración:
  1. Crear un Security Group para EMR Serverless:
   aws ec2 create-security-group --group-name "emr-serverless-sg" --description "Security group for EMR Serverless in SageMaker" --vpc-id vpc-12345678
   aws ec2 authorize-security-group-ingress --group-id sg-12345678 --protocol tcp --port 443 --cidr 10.0.0.0/16
   
  1. Configurar el notebook para usar VPC:
   # En el notebook, antes de crear la SparkSession
   from sagemaker import get_execution_role

   role = get_execution_role()
   vpc_config = {
       "SecurityGroupIds": ["sg-12345678"],
       "Subnets": ["subnet-12345678"]
   }

   spark = SparkSession.builder \
       .appName("SecureEMRServerless") \
       .config("spark.emr-serverless.vpc.enabled", "true") \
       .config("spark.emr-serverless.vpc.securityGroupIds", vpc_config["SecurityGroupIds"][0]) \
       .config("spark.emr-serverless.vpc.subnetIds", vpc_config["Subnets"][0]) \
       .getOrCreate()
   

Conclusión

La integración de EMR Serverless en SageMaker Unified Studio marca un salto cualitativo en cómo los equipos de datos gestionan runtimes de Spark. Al eliminar la fricción de configurar y mantener clústeres, los ingenieros pueden enfocarse en el desarrollo de pipelines en lugar de la infraestructura, mientras que los equipos de DevOps reducen la complejidad operativa con una única interfaz de monitorización.

Recomendaciones finales:
  1. Para equipos nuevos: Usar EMR Serverless para workloads intermitentes o con picos de carga, y Athena Spark para consultas ad-hoc económicas.
  2. Para migraciones: Validar costos y rendimiento con datasets de prueba antes de migrar notebooks críticos.
  3. Para entornos con requisitos de seguridad: Configurar VPC Connectivity desde el inicio para evitar rediseños posteriores.

Esta integración refuerza la tendencia de Serverless First en AWS, donde la infraestructura se abstrae para priorizar la productividad del desarrollador. Con herramientas como SageMaker Data Agent para generación de código y Spark UI unificado, el ciclo de desarrollo de datos se acelera, reduciendo el tiempo de time-to-insight en entornos de análisis interactivo.

FIN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *