View a markdown version of this page

Migración de trabajos de AWS Glue para Spark a la versión 6.0 de AWS Glue - AWS Glue

Migración de trabajos de AWS Glue para Spark a la versión 6.0 de AWS Glue

En este tema se describen los cambios entre las versiones 5.1 y 6.0 de AWS Glue para permitirle migrar sus aplicaciones de Spark y trabajos de ETL a AWS Glue 6.0. También se describen las características de la versión 6.0 de AWS Glue y las ventajas de usarla.

Para usar esta característica con sus trabajos de ETL de AWS Glue, elija 6.0 para la Glue version cuando cree sus trabajos.

Nuevas características

En esta sección se describen las nuevas características y ventajas de AWS Glue, versión 6.0.

  • Actualización de Apache Spark de la versión 3.5.6 en AWS Glue 5.1 a la versión 4.1.1 en AWS Glue 6.0.

  • Actualización de Scala 2.12.18 a Scala 2.13.17.

  • Actualización de Python 3.11 a Python 3.13.

  • Los formatos de tabla abierta (OTF) se actualizaron a Hudi 1.1.1, Iceberg 1.11.0 y Delta Lake 4.2.0.

  • Versión 3 del formato de Iceberg: amplía los tipos de datos y las estructuras de metadatos existentes para agregar nuevas capacidades, como por ejemplo:

    • Tipo de datos VARIANT con fragmentación de variantes para una administración simplificada de los datos semiestructurados y lecturas más rápidas.

    • Marcas de tiempo con precisión de nanosegundos.

    • Tipos de datos geoespaciales (Geometry y Geography).

  • Spark Declarative Pipelines (SDP): un nuevo marco declarativo para definir canalizaciones de datos de extremo a extremo mediante SQL o la API DataFrame, con compatibilidad con tablas de streaming y vistas materializadas. Para obtener más información, consulte Spark Declarative Pipelines.

  • Spark Connect para sesiones interactivas: permite la conectividad de clientes ligeros con las sesiones interactivas de AWS Glue a través del protocolo Spark Connect, que admite flujos de trabajo de desarrollo remoto.

  • UDF/UDTF de Python nativos de Arrow: rendimiento mejorado de las funciones de Python definidas por el usuario que utilizan el formato de columnas de Apache Arrow de forma nativa.

  • Entorno virtual de Python administrado por el cliente o generado por el servicio (--python-virtual-env): puede crear y proporcionar su propio entorno virtual de Python que AWS Glue se conecte a los controladores y ejecutores de Spark en tiempo de ejecución, lo que proporciona un control total sobre la administración de dependencias. Cuando los trabajos existentes se migran a AWS Glue 6.0, AWS Glue genera automáticamente este entorno virtual si es necesario.

  • Mejoras en la transmisión: modo en tiempo real para transmisiones sin estado con una latencia de milisegundos. Para obtener más información, consulte Activación del modo en tiempo real para trabajos de transmisión.

  • Actualizaciones de conectores: se actualizaron Amazon Redshift, MongoDB, Snowflake y otros conectores. Consulte Apéndice C: actualizaciones del conector para obtener los detalles completos de la versión.

Problemas conocidos y limitaciones

Tenga en cuenta los siguientes problemas y limitaciones conocidos:

  • El modo ANSI está activado de forma predeterminada en Spark 4.1. Las operaciones que antes devolvían NULL en caso de desbordamiento (por ejemplo, aritmética de enteros u operaciones de conversión) ahora generan excepciones. Establezca spark.sql.ansi.enabled=false para restaurar el comportamiento anterior.

  • Spark Declarative Pipelines (SDP) es una nueva característica con compatibilidad limitada con determinadas construcciones de SQL. Consulte la documentación de Spark Declarative Pipelines para conocer las limitaciones actuales.

  • Athena SQL no puede leer las tablas de la versión 3 de Iceberg creadas en AWS Glue 6.0 (error: Cannot read unsupported version 3). Utilice la versión 2 de Iceberg para garantizar la compatibilidad entre motores con Athena.

  • Python 3.13 elimina varios módulos obsoletos y cambia el comportamiento de algunas funciones de biblioteca estándar. Consulte la guía de migración a Python 3.13 para comprobar la compatibilidad.

  • Compatibilidad de AWS SDK para Java 2.x con --user-jars-first: AWS Glue 6.0 incluye la versión 2.44.6 de AWS SDK para Java 2.x. Si utiliza el parámetro de trabajo con un JAR personalizado que incluye una versión anterior del AWS SDK para Java 2.x, es posible que el trabajo falle con el error java.lang.NoSuchFieldError o uno similar. Estos errores se producen cuando al SDK incluido en su JAR personalizado le faltan clases, campos o métodos de los que depende el tiempo de ejecución de AWS Glue. Para evitar este problema, asegúrese de que cualquier JAR personalizado que suministre con --user-jars-first utilice la versión 2.44.6 o posterior de AWS SDK para Java 2.x.

Cambios bruscos

Tenga en cuenta los siguientes cambios importantes:

  • Se ha eliminado EMRFS. S3A es el único sistema de archivos de S3 en AWS Glue 6.0. La clase com.amazon.ws.emr.hadoop.fs.EmrFileSystem ya no está disponible. Los trabajos que utilizan rutas s3:// usan S3A automáticamente. Si anteriormente estableció configuraciones específicas de EMRFS (por ejemplo, fs.s3.consistent.*), elimínelas.

  • Se ha eliminado la versión 1 de AWS SDK para Java. Solo está disponible la versión 2 de AWS SDK (2.44.6). Los trabajos que importan paquetes com.amazonaws.services.* deben migrar a software.amazon.awssdk.services.*.

  • Se actualizó Scala de la versión 2.12 a la versión 2.13. Los JAR personalizados compilados con Scala 2.12 no funcionan. Vuelva a compilarlos con Scala 2.13.17. Cambios clave: se eliminó JavaConversions (use CollectionConverters), se eliminó MutableList (use ListBuffer), las colecciones paralelas requieren una importación por separado.

  • Cambios en la API de Spark 4.1:

    • Se eliminó SQLContext: use SparkSession directamente.

    • Modo ANSI activado de forma predeterminada: las conversiones de tipos implícitas y los desbordamientos se comportan de forma diferente.

    • Se eliminaron varias API obsoletas. Consulte la guía de migración de Spark 4.1 en el sitio web de Apache Spark.

  • Validación de la API CreateSession: validación adicional de los parámetros de sesión para las sesiones interactivas. Es posible que las configuraciones no válidas que antes se aceptaban de forma silenciosa ahora devuelvan errores.

  • Cambio de comportamiento de getResolvedOptions: la coincidencia de prefijos de argumentos está desactivada de forma predeterminada (allow_abbrev=False). Use el nombre completo del argumento o pase allow_abbrev=True a getResolvedOptions() para restaurar el comportamiento anterior.

Acciones para migrar a AWS Glue 6.0

Para los trabajos existentes, cambie la Glue version de la versión anterior a Glue 6.0 en la configuración del trabajo.

  • En AWS Glue Studio, elija Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 en Glue version.

  • En la API, elija 6.0 en el parámetro GlueVersion de la operación de la API UpdateJob.

Para nuevos trabajos, elija Glue 6.0 cuando cree un trabajo.

  • En la consola, elija Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0) en Glue version.

  • En AWS Glue Studio, elija Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 en Glue version.

  • En la API, elija 6.0 en el parámetro GlueVersion de la operación de la API CreateJob.

Para facilitar la migración de sus trabajos, puede utilizar las actualizaciones de IA generativa de Apache Spark para actualizar sus trabajos de ETL de AWS Glue desde versiones anteriores de AWS Glue (versión 2.0 y versiones posteriores) a la versión de AWS Glue más reciente.

Solución de problemas

Puede usar el agente de solución de problemas de Spark para solucionar los problemas de sus trabajos de ETL de AWS Glue.

Lista de comprobación de migración

Revise esta lista de comprobación para la migración:

  • [Scala] Vuelva a compilar los JAR personalizados con Scala 2.13.17. Sustituya JavaConversions por CollectionConverters.

  • [Python] Actualice el código para la compatibilidad con Python 3.13. Elimine el uso de módulos obsoletos (por ejemplo, imp, cgi, cgitb).

  • [Python] Actualice las referencias a boto3 de 1.40 a 1.42.

  • [Spark SQL] Revise las consultas para ver el impacto del modo ANSI. Agregue spark.sql.ansi.enabled=false si es necesario.

  • [SDK] Sustituya cualquier importación de la versión 1 de AWS SDK (com.amazonaws.*) por la versión 2 del SDK (software.amazon.awssdk.*).

  • [S3] Elimine las configuraciones específicas de EMRFS. Ahora S3A es el conector de S3 predeterminado y único.

  • [Dependencias] Actualice --extra-jars a las versiones compiladas para Scala 2.13 y Spark 4.1.

Migrar de AWS Glue 5.1 a AWS Glue 6.0

Todos los parámetros de trabajo existentes y las principales características que existen en AWS Glue 5.1 existirá en AWS Glue 6.0. Tenga en cuenta los siguientes cambios al migrar:

  • Sistema de archivos de S3: EMRFS ya no está disponible. S3A es el único conector de S3. Si anteriormente estableció spark.hadoop.fs.s3a.endpoint.region, continúe usándolo. Si no está establecido, asegúrese de que la configuración de red o del punto de conexión de VPC permita que S3A resuelva la región correcta.

  • Compatibilidad binaria con Scala: AWS Glue 6.0 usa Scala 2.13. Todos los archivos --extra-jars compilados con Scala 2.12 fallan con NoSuchMethodError o ClassNotFoundException. Vuelva a compilar todos los JAR personalizados de Scala/Java.

  • Cambios en el comportamiento de Spark SQL:

    • El modo ANSI está activado de forma predeterminada. El desbordamiento de enteros, las conversiones no válidas y los índices de matriz fuera de los límites generan excepciones en lugar de devolver NULL.

    • Se ha cambiado el valor predeterminado spark.sql.legacy.timeParserPolicy. El análisis de fecha y hora puede comportarse de forma diferente.

    • Las conversiones implícitas de cadenas a números en SQL pueden fallar en el modo ANSI.

  • Versión de Python: Python 3.13 es el tiempo de ejecución. La característica --additional-python-modules sigue funcionando, pero está obsoleta. Considere la posibilidad de migrar a --python-virtual-env para tener un control total de las dependencias.

  • AWS SDK: solo está disponible la versión 2 del SDK. Si sus scripts utilizan boto3 (Python), no es necesario realizar ningún cambio: boto3 sigue funcionando. Para los trabajos de Scala/Java que utilicen directamente el AWS SDK, migre a las API de la versión 2.

Consulte la documentación de migración de Spark:

Migración desde versiones anteriores de AWS Glue a AWS Glue 6.0

Migración de conectores y controladores JDBC para   AWS Glue 6.0

Para ver las versiones de los conectores de lago de datos y JDBC que se actualizaron, consulte:

Los siguientes cambios se aplican a las actualizaciones de las versiones de OTF identificadas en Apéndice D: actualizaciones del formato de tabla abierta para AWS Glue 6.0.

Apache Iceberg

Tenga en cuenta los siguientes cambios:

  • Iceberg se actualizó a la versión 1.11.0 con compatibilidad total con las especificaciones de la versión 3 de Apache Iceberg.

  • Tipo de datos VARIANT con fragmentación de variantes para consultas de datos semiestructurados optimizadas.

  • Marcas de tiempo con precisión de nanosegundos.

  • Tipos de datos geoespaciales (Geometry y Geography).

Las siguientes características de Iceberg ya son compatibles con los trabajos de ETL de AWS Glue desde AWS Glue 5.1: los vectores de eliminación (combinación en lectura mediante mapas de bits de Roaring Bitmaps almacenados en archivos Puffin) y el rastreo del linaje de filas mediante metadatos de first-row-id.

Apache Hudi

Tenga en cuenta los siguientes cambios:

  • Se actualizó Hudi a la versión 1.1.1.

  • Compatibilidad continua con el acceso a la lectura y escritura de FTA en las tablas registradas de AWS Lake Formation.

Delta Lake

Tenga en cuenta los siguientes cambios:

  • Se actualizó Delta Lake a la versión 4.2.0.

  • Compatibilidad continua con el acceso a la lectura y escritura de FTA en las tablas registradas de AWS Lake Formation.

Limitaciones conocidas

Las limitaciones siguientes se aplican a AWS Glue 6.0:

  • No se admiten las claves de cifrado de tablas nativas de Iceberg.

  • No se admiten las transformaciones de Iceberg con varios argumentos.

  • Los nuevos tipos de datos de la versión 3 de Iceberg solo son compatibles con Spark DataFrames. Estas características no funcionarán con DynamicFrames.

  • ETL visual en AWS Glue Studio no admite los nuevos tipos de datos de la versión 3 de Iceberg. Si desea utilizar estas nuevas características con ETL visual, le recomendamos migrar sus trabajos de ETL al Estudio unificado de Amazon SageMaker.

  • El control de acceso detallado (FGAC) no es compatible con las columnas VARIANT.

  • Athena SQL no puede leer las tablas de Iceberg creadas con 'format-version'='3' (error: Cannot read unsupported version 3). Utilice la versión 2 de Iceberg para garantizar la compatibilidad entre motores con Athena.

Apéndice A: actualizaciones de dependencias importantes

Las siguientes son las actualizaciones de dependencias:

Dependencia Versión en AWS Glue 6.0 Versión en   AWS Glue 5.1 Versión en   AWS Glue 5.0 Versión en   AWS Glue 4.0
Java 17 17 17 8
Spark 4.1.1 3.5.6 3.5.4 3.3.0-amzn-1
Hadoop 3.4.2 3.4.1 3.4.1 3.3.3-amzn-0
Scala 2.13.17 2.12.18 2.12.18 2.12
Jackson 2.20.0 2.15.2 2.15.2 2.12
Hive 2.3.10-amzn-1 2.3.9-amzn-4 2.3.9-amzn-4 2.3.9-amzn-2
Arrow 18.3.0 12.0.1 12.0.1 7.0.0
AWS GlueCliente del Catálogo de datos de 4.11.0 4.9.0 4.5.0 3.7.0
AWS SDK para Java 2.44.6 (solo en la versión 2) 2.35.5 2.29.52 1.12
Python 3.13 3.11 3.11 3.10
Boto3 1.42.84 1.40.61 1.34.131 1.26
Json4s 3.7.0-M11 3.7.0-M11 3.7.0-M11 3.7.0-M11
Conector de DynamoDB para EMR 6.1.0 5.7.0 5.6.0 4.16.0
Netty 4.2.7 N/A N/A N/A
Parquet 1.16.0 N/A N/A N/A
NumPy 2.4.4 N/A N/A N/A
Pandas 2.3.3 N/A N/A N/A

Apéndice B: actualizaciones de controladores JDBC

Las siguientes son las actualizaciones de controladores JDBC:

Controlador Versión del controlador JDBC en AWS Glue 6.0 Versión del controlador JDBC en   AWS Glue 5.1 Versión del controlador JDBC en   AWS Glue 5.0
MySQL 8.0.33 8.0.33 8.0.33
Microsoft SQL Server 10.2.0 10.2.0 10.2.0
Oracle Database 23.4.0.24.05 23.3.0.23.09 23.3.0.23.09
PostgreSQL 42.7.3 42.7.3 42.7.3
Amazon Redshift

redshift-jdbc42-2.2.7

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.29

MariaDB 3.5.7 N/A N/A

Apéndice C: actualizaciones del conector

A continuación se indican las actualizaciones del conector:

Connector Versión en AWS Glue 6.0 Versión en   AWS Glue 5.1 Versión en   AWS Glue 5.0
Spark Redshift 6.7.0 6.4.2 6.4.0
Spark SQL Kinesis 2.1.0 N/A N/A
MongoDB 11.0.1 10.3.0 10.3.0
Snowflake 3.17.0 3.1.1 3.0.0
OpenSearch 2.0.0 1.2.0 1.2.0
Conector de DynamoDB para EMR 6.1.0 5.7.0 5.6.0

Apéndice D: actualizaciones del formato de tabla abierta

A continuación, puede ver las actualizaciones del formato de tabla abierta:

OTF Versión en AWS Glue 6.0 Versión en   AWS Glue 5.1 Versión en   AWS Glue 5.0 Versión en   AWS Glue 4.0
Hudi 1.1.1 1.0.2 0.15.0 0.12.1
Delta Lake 4.2.0 3.3.2 3.3.0 2.1.0
Iceberg 1.11.0 1.10.0 1.7.1 1.0.0