

# Migración de trabajos de AWS Glue para Spark a la versión 6.0 de AWS Glue
<a name="migrating-version-60"></a>

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.

**Topics**
+ [Nuevas características](#migrating-version-60-features)
+ [Acciones para migrar a AWS Glue 6.0](#migrating-version-60-actions)
+ [Lista de comprobación de migración](#migrating-version-60-checklist)
+ [Migrar de AWS Glue 5.1 a AWS Glue 6.0](#migrating-version-60-from-51)
+ [Migración desde versiones anteriores de AWS Glue a AWS Glue 6.0](#migrating-older-versions-to-60)
+ [Migración de conectores y controladores JDBC para   AWS Glue 6.0](#migrating-version-60-connector-driver-migration)
+ [Limitaciones conocidas](#migrating-version-60-known-limitations)
+ [Apéndice A: actualizaciones de dependencias importantes](#migrating-version-60-appendix-dependencies)
+ [Apéndice B: actualizaciones de controladores JDBC](#migrating-version-60-appendix-jdbc-driver)
+ [Apéndice C: actualizaciones del conector](#migrating-version-60-appendix-connector)
+ [Apéndice D: actualizaciones del formato de tabla abierta](#migrating-version-60-appendix-open-table-formats)

## Nuevas características
<a name="migrating-version-60-features"></a>

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).
**La actualización a la versión 3 de Iceberg es un cambio unidireccional**  
Si actualiza una tabla de Iceberg al formato de versión 3, no podrá volver a cambiarla a la versión 2, ya que Iceberg rechazará la operación `ALTER TABLE ... SET TBLPROPERTIES('format-version'='2')`. Si utiliza otro servicio que no es compatible con la versión 3 de Iceberg, consérvelo como una tabla de la versión 2 de Iceberg y no lo actualice a la versión 3.
+ **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-declarative-pipelines.md).
+ **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](streaming-chapter.md#glue-streaming-real-time-mode).
+ **Actualizaciones de conectores**: se actualizaron Amazon Redshift, MongoDB, Snowflake y otros conectores. Consulte [Apéndice C: actualizaciones del conector](#migrating-version-60-appendix-connector) 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](spark-declarative-pipelines.md) 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](https://spark.apache.org/docs/4.1.1/migration-guide.html) 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
<a name="migrating-version-60-actions"></a>

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](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-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](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob).

Para facilitar la migración de sus trabajos, puede utilizar las [actualizaciones de IA generativa de Apache Spark](https://docs.aws.amazon.com/glue/latest/dg/upgrade-analysis.html) 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.

**Nota**  
Puede usar el [agente de solución de problemas de Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshoot.html) para solucionar los problemas de sus trabajos de ETL de AWS Glue.

## Lista de comprobación de migración
<a name="migrating-version-60-checklist"></a>

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
<a name="migrating-version-60-from-51"></a>

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:
+ [Migration Guide: Spark Core](https://spark.apache.org/docs/4.1.1/core-migration-guide.html) en el sitio web de Apache Spark.
+ [Migration Guide: SQL, Datasets and DataFrame](https://spark.apache.org/docs/4.1.1/sql-migration-guide.html) en el sitio web de Apache Spark
+ [Migration Guide: Structured Streaming](https://spark.apache.org/docs/4.1.1/ss-migration-guide.html) en el sitio web de Apache Spark
+ [Upgrading PySpark](https://spark.apache.org/docs/4.1.1/api/python/migration_guide/pyspark_upgrade.html) en el sitio web de Apache Spark

## Migración desde versiones anteriores de AWS Glue a AWS Glue 6.0
<a name="migrating-older-versions-to-60"></a>
+ 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](migrating-version-51.md#migrating-version-51-from-50).
+ 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](migrating-version-50.md#migrating-version-50-from-40).
+ 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](migrating-version-50.md#migrating-version-50-from-30).
+ 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](migrating-version-50.md#migrating-version-50-from-20).
+ 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](#migrating-version-60-from-51).

## Migración de conectores y controladores JDBC para   AWS Glue 6.0
<a name="migrating-version-60-connector-driver-migration"></a>

Para ver las versiones de los conectores de lago de datos y JDBC que se actualizaron, consulte:
+ [Apéndice B: actualizaciones de controladores JDBC](#migrating-version-60-appendix-jdbc-driver)
+ [Apéndice C: actualizaciones del conector](#migrating-version-60-appendix-connector)
+ [Apéndice D: actualizaciones del formato de tabla abierta](#migrating-version-60-appendix-open-table-formats)

Los siguientes cambios se aplican a las actualizaciones de las versiones de OTF identificadas en [Apéndice D: actualizaciones del formato de tabla abierta](#migrating-version-60-appendix-open-table-formats) 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
<a name="migrating-version-60-known-limitations"></a>

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
<a name="migrating-version-60-appendix-dependencies"></a>

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
<a name="migrating-version-60-appendix-jdbc-driver"></a>

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 name="migrating-version-60-appendix-connector"></a>

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.1.8 | 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 name="migrating-version-60-appendix-open-table-formats"></a>

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 | 