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.
Temas
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=falsepara 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 errorjava.lang.NoSuchFieldErroro 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-firstutilice 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.EmrFileSystemya no está disponible. Los trabajos que utilizan rutass3://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 asoftware.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(useCollectionConverters), se eliminóMutableList(useListBuffer), las colecciones paralelas requieren una importación por separado. -
Cambios en la API de Spark 4.1:
Se eliminó
SQLContext: useSparkSessiondirectamente.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 paseallow_abbrev=TrueagetResolvedOptions()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 3enGlue version. -
En la API, elija
6.0en el parámetroGlueVersionde 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)enGlue version. -
En AWS Glue Studio, elija
Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3enGlue version. -
En la API, elija
6.0en el parámetroGlueVersionde 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
JavaConversionsporCollectionConverters. -
[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=falsesi 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-jarsa 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-jarscompilados con Scala 2.12 fallan conNoSuchMethodErroroClassNotFoundException. 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-modulessigue funcionando, pero está obsoleta. Considere la posibilidad de migrar a--python-virtual-envpara 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:
-
Migration Guide: Spark Core
en el sitio web de Apache Spark. -
Migration Guide: SQL, Datasets and DataFrame
en el sitio web de Apache Spark -
Migration Guide: Structured Streaming
en el sitio web de Apache Spark -
Upgrading PySpark
en el sitio web de Apache Spark
Migración desde versiones anteriores de AWS Glue a AWS Glue 6.0
-
Para conocer los pasos relacionados con la migración de AWS Glue 5.0 a AWS Glue 5.1, consulte Migración de AWS Glue 5.0 a AWS Glue 5.1.
-
Para conocer los pasos relacionados con la migración de AWS Glue 4.0 a AWS Glue 5.0, consulte Migración de AWS Glue 4.0 a AWS Glue 5.0.
-
Para conocer los pasos relacionados con la migración de AWS Glue 3.0 a AWS Glue 5.0, consulte Migración de AWS Glue 3.0 a AWS Glue 5.0.
-
Para conocer los pasos relacionados con la migración de AWS Glue 2.0 a AWS Glue 5.0, consulte Migración de AWS Glue 2.0 a AWS Glue 5.0.
-
Tras completar los pasos anteriores, finalice la migración a AWS Glue 6.0 siguiendo Migrar de AWS Glue 5.1 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 |