

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

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

Para usar esta función con sus trabajos de ETL de AWS Glue, elija **5.1** para la `Glue version` cuando cree sus trabajos.

**Topics**
+ [Nuevas características](#migrating-version-51-features)
+ [Acciones para migrar a AWS Glue 5.1](#migrating-version-51-actions)
+ [Lista de comprobación de migración](#migrating-version-51-checklist)
+ [Migración de AWS Glue 5.0 a AWS Glue 5.1](#migrating-version-51-from-50)
+ [Migración desde versiones anteriores de AWS Glue a AWS Glue 5.1](#migrating-older-versions-to-51)
+ [Migración de conectores y controladores JDBC para AWS Glue 5.1](#migrating-version-51-connector-driver-migration)

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

En esta sección se describen las nuevas características y ventajas de la versión 5.1 de AWS Glue.
+ Actualización de Apache Spark de la versión 3.5.4 en AWS Glue 5.0 a la versión 3.5.6 en AWS Glue 5.1.
+ Los formatos de tabla abierta (OTF) se actualizaron a Hudi 1.0.2, Iceberg 1.10.0 y Delta Lake 3.3.2
+ **Vistas materializadas de iceberg**: cree y administre vistas materializadas (MV) de Iceberg. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/). 
+ **Formato Iceberg versión 3.0**: amplía los tipos de datos y las estructuras de metadatos existentes para añadir nuevas capacidades. Para obtener más información, consulte [Especificación de tablas de Iceberg](https://iceberg.apache.org/spec/). 
+ **Acceso completo a la tabla de Hudi**: control de acceso completo a la tabla (FTA) para Apache Hudi en Apache Spark conforme a las políticas definidas en AWS Lake Formation. Esta característica habilita operaciones de lectura y escritura desde trabajos de ETL de AWS Glue en tablas registradas en AWS Lake Formation cuando el rol del trabajo cuenta con acceso completo a la tabla.
+ **Compatibilidad con control de acceso detallado nativo de Spark (FGAC) mediante AWS Lake Formation**: operaciones DDL/DML (como CREATE, ALTER, DELETE y DROP) con control de acceso detallado para tablas de Apache Hive, Apache Iceberg y Delta Lake registradas en AWS Lake Formation.
+ **Contexto de auditoría para trabajos de Spark**: el contexto de auditoría para los trabajos de ETL de AWS Glue estará disponible para las llamadas a las API de AWS Glue y AWS Lake Formation en los registros de AWS CloudTrail.

**Problemas conocidos y limitaciones**  
Tenga en cuenta los siguientes problemas y limitaciones conocidos:
+ Compatibilidad limitada con la visualización de la cláusula de SQL para la creación de vistas materializadas, la reescritura de consultas y la actualización incremental. Puede encontrar más información en la [página de documentación de características de las vistas materializadas de Iceberg](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations). 
+ Las **escrituras de FTA de Hudi** requieren el uso de HoodieCredentialedHadoopStorage para la venta de credenciales durante la ejecución del trabajo. Establezca la siguiente configuración cuando ejecute los trabajos de Hudi:

  `hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage` 
+ La compatibilidad con la escritura de FTA de Hudi solo funciona con las configuraciones predeterminadas de Hudi. Los ajustes de Hudi personalizados o no predeterminados podrían no ser totalmente compatibles y podrían causar un comportamiento inesperado. Tampoco es compatible la agrupación en clústeres para las tablas Fusionar al leer (MOR) en el modo de escritura de FTA.

**Cambios bruscos**  
Tenga en cuenta los siguientes cambios importantes:
+  El sistema de archivos S3A reemplazó el EMRFS como conector S3 predeterminado. Para obtener información acerca de cómo realizar la migración, consulte [Migración de AWS Glue 5.0 a AWS Glue 5.1](#migrating-version-51-from-50). 

## Acciones para migrar a AWS Glue 5.1
<a name="migrating-version-51-actions"></a>

Para los trabajos existentes, cambie la `Glue version` de la versión anterior a `Glue 5.1` en la configuración del trabajo.
+ En AWS Glue Studio, elija `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` en `Glue version`.
+ En la API, elija **5.1** en el parámetro `GlueVersion` de la operación de la API [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-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 5.1` cuando cree un trabajo.
+ En la consola, elija `Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)` en `Glue version`.
+ En AWS Glue Studio, elija `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` en `Glue version`.
+ En la API, elija **5.1** en el parámetro `GlueVersion` de la operación de la API [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob).

Para ver los registros de eventos de Spark de AWS Glue 5.1 procedentes de AWS Glue 2.0 o una versión anterior, [active un servidor de historial de Spark actualizado para AWS Glue 5.1 mediante CloudFormation o Docker](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html).

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

Revise esta lista de comprobación para la migración:
+ [Python] Actualización de las referencias a boto de 1.34 a 1.40.

## Migración de AWS Glue 5.0 a AWS Glue 5.1
<a name="migrating-version-51-from-50"></a>

Todos los parámetros de trabajo existentes y las principales características que existen en AWS Glue 5.0 existirá en AWS Glue 5.1. Tenga en cuenta los siguientes cambios al migrar:
+ En AWS Glue 5.1, el sistema de archivos S3A reemplazó el EMRFS como conector S3 predeterminado. Si no se establecen `spark.hadoop.fs.s3a.endpoint` y `spark.hadoop.fs.s3a.endpoint.region`, la región predeterminada utilizada por S3A es `us-east-2`. Esto puede provocar problemas, como errores de tiempo de espera de carga en S3, especialmente en los trabajos de VPC. Para mitigar los problemas ocasionados por este cambio, establezca la configuración `spark.hadoop.fs.s3a.endpoint.region` de Spark cuando utilice el sistema de archivos S3A en AWS Glue 5.1.
+ Para seguir utilizando el EMRFS en lugar del S3A, establezca las siguientes configuraciones de Spark:

  ```
      --conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate
  ```

Consulte la documentación de migración de Spark:
+ [Migration Guide: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Migration Guide: SQL, Datasets and DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Migration Guide: Structured Streaming](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Upgrading PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## Migración desde versiones anteriores de AWS Glue a AWS Glue 5.1
<a name="migrating-older-versions-to-51"></a>
+ Para conocer los pasos de migración relacionados con la versión de AWS Glue 4.0 a AWS Glue 5.0, consulte [Migración de la versión de AWS Glue 4.0 a AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40).
+ Para conocer los pasos de migración relacionados con la versión de AWS Glue 3.0 a AWS Glue 5.0, consulte [Migración de la versión de AWS Glue 3.0 a AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30).
+ Para conocer los pasos de migración relacionados con la versión de AWS Glue 2.0 a AWS Glue 5.0 y una lista de las diferencias de migración entre las versiones de AWS Glue 2.0 y 4.0, consulte [Migración de la versión de AWS Glue 2.0 a AWS Glue 5.0](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20). 

## Migración de conectores y controladores JDBC para AWS Glue 5.1
<a name="migrating-version-51-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-51-appendix-jdbc-driver)
+ [Apéndice C: actualizaciones del conector](#migrating-version-51-appendix-connector)
+ [Apéndice D: actualizaciones del formato de tabla abierta](#migrating-version-51-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-51-appendix-open-table-formats) para AWS Glue 5.1.

**Apache Hudi**  
Tenga en cuenta los siguientes cambios:
+ Compatibilidad con el acceso a la lectura y escritura de FTA en las tablas registradas en Lake Formation.

**Apache Iceberg**  
Tenga en cuenta los siguientes cambios:
+ Compatibilidad con el formato Iceberg versión 3. Se admiten las siguientes características:
  + Transformaciones con varios argumentos para la partición y clasificación.
  + Seguimiento del linaje de filas.
  + Vectores de eliminación. Puede obtener más información en la [publicación del blog](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/). 
  + Claves de cifrado de tablas.
  + Compatibilidad con valores predeterminados para las columnas.
+ Compatibilidad con operaciones de escritura con control de acceso detallado (FGAC) nativo de Spark en tablas registradas en AWS Lake Formation.
+ Compatibilidad con SQL de Athena: no se pueden leer las tablas de Iceberg V3 creadas por Spark en EMR debido a un error: `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`.

**Delta Lake**  
Tenga en cuenta los siguientes cambios:
+ Compatibilidad con el acceso a la lectura y escritura de FTA en las tablas registradas en Lake Formation.

### Apéndice A: actualizaciones de dependencias importantes
<a name="migrating-version-51-appendix-dependencies"></a>

Las siguientes son las actualizaciones de dependencias:


| Dependencia | Versión en AWS Glue 5.1 | Versión en AWS Glue 5.0 | Versión en AWS Glue 4.0 | Versión en AWS Glue 3.0 | Versión en AWS Glue 2.0 | Versión en AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Java | 17 | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.6 | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Scala | 2.12.18 | 2.12.18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15.2 | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2.73.0 | 2.69.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 | 
| Json4s | 3.7.0-M11 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Arrow | 12.0.1 | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS GlueCliente del Catálogo de datos de  | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | N/A | 
| AWS SDK para Java | 2.35.5 | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3.11 | 3.11 | 3.10 | 3.7 | 2.7 y 3.6 | 2.7 y 3.6 | 
| Boto | 1.40.61 | 1.34.131 | 1.26 | 1.18 | 1.12 | N/A | 
| Conector de DynamoDB para EMR | 5.7.0 | 5.6.0 | 4.16.0 |  |  |  | 

### Apéndice B: actualizaciones de controladores JDBC
<a name="migrating-version-51-appendix-jdbc-driver"></a>

Las siguientes son las actualizaciones de controladores JDBC:


| Controlador | Versión del controlador JDBC en AWS Glue 5.1 | Versión del controlador JDBC en AWS Glue 5.0 | Versión del controlador JDBC en   AWS Glue 4.0 | Versión del controlador JDBC en AWS Glue 3.0 | Versión del controlador JDBC en las versiones de AWS Glue anteriores | 
| --- | --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2.0 | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 | 
| Oracle Database | 23.3.0.23.09 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 | 
| PostgreSQL | 42.7.3 | 42.7.3 | 42.3.6 | 42.2.18 | 42.1.0 | 
| Amazon Redshift | redshift-jdbc42-2.1.0.29 | redshift-jdbc42-2.1.0.29 | redshift-jdbc42-2.1.0.16 | redshift-jdbc41-1.2.12.1017  | redshift-jdbc41-1.2.12.1017  | 
| SAP Hana | 2.20.17 | 2.20.17 | 2.17.12 |  |  | 
| Teradata | 20.00.00.33 | 20.00.00.33 | 20.00.00.06 |  |  | 

### Apéndice C: actualizaciones del conector
<a name="migrating-version-51-appendix-connector"></a>

A continuación se indican las actualizaciones del conector:


| Controlador | Versión del conector en AWS Glue 5.1 | Versión del conector en AWS Glue 5.0 | Versión del conector en   AWS Glue 4.0 | Versión del conector en   AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| Conector de DynamoDB para EMR | 5.7.0 | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.2 | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.3.0 | 10.0.4 | 3.0.0 | 
| Snowflake | 3.1.1 | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0.32.2 | 0.32.2 | 0.32.2 |  | 
| AzureCosmos | 4.33.0 | 4.33.0 | 4.22.0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 | 3.3.5 |  | 

### Apéndice D: actualizaciones del formato de tabla abierta
<a name="migrating-version-51-appendix-open-table-formats"></a>

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


| OTF | Versión del conector en AWS Glue 5.1 | Versión del conector en AWS Glue 5.0 | Versión del conector en   AWS Glue 4.0 | Versión del conector en   AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| Hudi | 1.0.2 | 0.15.0 | 0.12.1 | 0.10.1 | 
| Delta Lake | 3.3.2 | 3.3.0 | 2.1.0 | 1.0.0 | 
| Iceberg | 1.10.0 | 1.7.1 | 1.0.0 | 0.13.1 | 