Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migrating AWS Glue pour Spark Jobs AWS Glue la version 6.0
Cette rubrique décrit les modifications apportées entre les AWS Glue versions 5.1 et 6.0 pour vous permettre de migrer vos applications Spark et vos tâches ETL vers la AWS Glue version 6.0. Il décrit également les fonctionnalités de la AWS Glue version 6.0 et les avantages de son utilisation.
Pour utiliser cette fonctionnalité avec vos tâches AWS Glue ETL, sélectionnez-la Glue version lors 6.0 de la création de vos tâches.
Rubriques
Nouvelles fonctionnalités
Cette section décrit les nouvelles fonctionnalités et les avantages de la AWS Glue version 6.0.
-
Mise à niveau d'Apache Spark de la version 3.5.6 dans la AWS Glue version 5.1 à la version 4.1.1 dans AWS Glue la version 6.0.
-
Mise à niveau de Scala de la version 2.12.18 à la version 2.13.17.
-
Mise à niveau de Python de la version 3.11 à la version 3.13.
-
Formats de table ouverts (OTF) mis à jour vers Hudi 1.1.1, Iceberg 1.11.0 et Delta Lake 4.2.0.
-
Format Iceberg version 3 — Étend les types de données et les structures de métadonnées existantes pour ajouter de nouvelles fonctionnalités, notamment :
Type de données VARIANT avec destruction des variantes pour une gestion simplifiée des données semi-structurées et des lectures plus rapides.
Nanosecond-precision horodatages.
Types de données géospatiales (géométrie et géographie).
-
Spark Declarative Pipelines (SDP) : nouveau cadre déclaratif permettant de définir des pipelines de données de bout en bout à l'aide de SQL ou d' DataFrame API, avec prise en charge des tables de streaming et des vues matérialisées. Pour de plus amples informations, veuillez consulter Pipelines déclaratifs Spark.
-
Spark Connect pour les sessions interactives : permet la connectivité des clients légers aux sessions AWS Glue interactives via le protocole Spark Connect, prenant en charge les flux de travail de développement à distance.
-
Arrow-native Python UDFs/UDTFs — Performances améliorées pour les fonctions Python définies par l'utilisateur à l'aide du format colonnaire Apache Arrow en mode natif.
-
Customer-managed ou environnement virtuel Python généré par un service (
--python-virtual-env) : vous pouvez créer et fournir votre propre venv Python qui AWS Glue se connecte aux pilotes et exécuteurs Spark lors de l'exécution, offrant ainsi un contrôle total sur la gestion des dépendances. Lorsque les tâches existantes sont migrées vers la AWS Glue version 6.0, cet environnement virtuel est AWS Glue automatiquement généré si nécessaire. -
Améliorations du streaming : Real-time mode de diffusion sans état avec une latence de l'ordre de la milliseconde. Pour de plus amples informations, veuillez consulter Activation du mode temps réel pour les tâches de streaming.
-
Mises à niveau des connecteurs : mise à jour d'Amazon Redshift, MongoDB, Snowflake et d'autres connecteurs. Consultez Annexe C : Mises à niveau des connecteurs les détails de la version complète.
Limites et problèmes connus
Notez les problèmes et limites connus suivants :
-
Le mode ANSI est activé par défaut dans Spark 4.1. Les opérations qui renvoyaient auparavant la valeur NULL en cas de débordement (par exemple, arithmétique des entiers, opérations de conversion) génèrent désormais des exceptions. Paramétrez
spark.sql.ansi.enabled=falsepour rétablir le comportement précédent. -
Spark Declarative Pipelines (SDP) est une nouvelle fonctionnalité dont la prise en charge de certaines constructions SQL est limitée. Reportez-vous à la Pipelines déclaratifs Spark documentation pour connaître les limites actuelles.
-
Les tables Iceberg v3 créées dans la AWS Glue version 6.0 ne peuvent pas être lues par Athena SQL (erreur :
Cannot read unsupported version 3). Utilisez Iceberg v2 pour une compatibilité multimoteur avec Athena. -
Python 3.13 supprime plusieurs modules obsolètes et modifie le comportement de certaines fonctions de bibliothèque standard. Consultez le guide de migration vers Python 3.13 pour en savoir plus sur la compatibilité.
-
AWS La compatibilité du SDK pour Java 2.x avec
--user-jars-first— AWS Glue 6.0 inclut le AWS SDK pour Java 2.x version 2.44.6. Si vous utilisez le paramètre--user-jars-firstjob avec un JAR personnalisé qui regroupe une ancienne version du AWS SDK pour Java 2.x, votre job risque d'échouer avec une erreur similairejava.lang.NoSuchFieldErrorou similaire. Ces échecs se produisent lorsque le SDK intégré à votre fichier JAR personnalisé ne contient pas de classes, de champs ou de méthodes dont dépend le AWS Glue runtime. Pour éviter ce problème, assurez-vous que tout fichier JAR personnalisé que vous fournissez--user-jars-firstutilise le AWS SDK pour Java 2.x version 2.44.6 ou ultérieure.
Évolutions
Prenez note des modifications majeures suivantes :
-
L'EMRFS a été supprimé. S3A est le seul système de fichiers S3 de la version 6.0. AWS Glue Le
com.amazon.ws.emr.hadoop.fs.EmrFileSystemcours n'est plus disponible. Les tâches utilisants3://des chemins utilisent automatiquement S3A. Si vous avez déjà défini EMRFS-specific des configurations (par exemple,fs.s3.consistent.*), supprimez-les. -
AWS Le SDK pour Java v1 a été supprimé. Seul le AWS SDK v2 (2.44.6) est disponible. Les jobs qui importent
com.amazonaws.services.*des packages doivent être migrés verssoftware.amazon.awssdk.services.*. -
Scala est passé de la version 2.12 à la version 2.13. Les fichiers JAR personnalisés compilés avec Scala 2.12 ne fonctionnent pas. Recompilez avec Scala 2.13.17. Principales modifications : les collections
JavaConversionssupprimées (utilisationCollectionConverters),MutableListsupprimées (utilisationListBuffer) et parallèles nécessitent une importation séparée. -
Changements apportés à l'API Spark 4.1 :
SQLContextretiré — à utiliserSparkSessiondirectement.Mode ANSI activé par défaut : les conversions de type implicites et les débordements se comportent différemment.
Plusieurs API obsolètes ont été supprimées. Consultez le guide de migration vers Spark 4.1
sur le site Web d'Apache Spark.
-
CreateSession Validation de l'API : validation supplémentaire des paramètres de session pour les sessions interactives. Les configurations non valides qui étaient auparavant acceptées en mode silencieux peuvent désormais renvoyer des erreurs.
-
getResolvedOptionschangement de comportement — La correspondance des préfixes d'arguments est désactivée par défaut (allow_abbrev=False). Utilisez le nom complet de l'argument ouallow_abbrev=Truepassez-legetResolvedOptions()à pour rétablir l'ancien comportement.
Actions pour migrer vers AWS Glue 6.0
Pour les tâches existantes, modifiez la Glue version depuis la version précédente vers Glue 6.0 dans la configuration de la tâche.
-
Dans AWS Glue Studio, choisissez
Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3dansGlue version. -
Dans l’API, choisissez
6.0dans le paramètreGlueVersionde l’opération d’API UpdateJob.
Pour les nouvelles tâches, choisissez Glue 6.0 lorsque vous créez une tâche.
-
Dans la console, choisissez
Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0)dansGlue version. -
Dans AWS Glue Studio, choisissez
Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3dansGlue version. -
Dans l’API, choisissez
6.0dans le paramètreGlueVersionde l’opération d’API CreateJob.
Pour faciliter la migration de vos tâches, vous pouvez utiliser les mises à niveau de Generative AI pour mettre Apache Spark à niveau vos tâches AWS Glue ETL des anciennes AWS Glue versions (2.0 et versions ultérieures) vers la dernière AWS Glue version.
Résolution des problèmes
Vous pouvez utiliser l'agent de dépannage Spark pour résoudre vos tâches AWS Glue ETL.
Liste de contrôle de migration
Consultez cette liste de contrôle pour la migration :
-
[Scala] Recompilez les fichiers JAR personnalisés avec Scala 2.13.17. Remplacez
JavaConversionsparCollectionConverters. -
[Python] Code de mise à jour pour la compatibilité avec Python 3.13. Supprimez l'utilisation de modules obsolètes (par exemple,,
impcgi,cgitb). -
[Python] Mettez à jour les références boto3 de 1.40 à 1.42.
-
[Spark SQL] Vérifiez l'impact des requêtes sur le mode ANSI.
spark.sql.ansi.enabled=falseAjoutez-en si nécessaire. -
[SDK] Remplacez toutes les importations du AWS SDK v1 (
com.amazonaws.*) par le SDK v2 ().software.amazon.awssdk.* -
[S3] Supprimez les EMRFS-specific configurations. S3A est désormais le connecteur S3 par défaut et le seul.
-
[Dépendances] Mise
--extra-jarsà jour des versions compilées pour Scala 2.13 et Spark 4.1.
Migration à partir de AWS Glue 5.1 à AWS Glue 6.0
Tous les paramètres de tâche existants et les principales fonctionnalités de la version AWS Glue 5.1 seront disponibles dans la AWS Glue version 6.0. Notez les modifications suivantes lors de la migration :
-
Système de fichiers S3 : EMRFS n'est plus disponible. Le S3A est le seul connecteur S3. Si vous l'avez déjà configuré
spark.hadoop.fs.s3a.endpoint.region, continuez à l'utiliser. S'il n'est pas défini, assurez-vous que la configuration de votre point de terminaison ou réseau VPC permet à S3A de résoudre la bonne région. -
Compatibilité binaire Scala : la AWS Glue version 6.0 utilise Scala 2.13. Toute
--extra-jarscompilation avec Scala 2.12 échoue avecNoSuchMethodErrorou.ClassNotFoundExceptionRecompilez tous les fichiers Scala/Java JAR personnalisés. -
Changements de comportement de Spark SQL :
Le mode ANSI est activé par défaut. Le débordement d'entiers, les conversions non valides et les index de tableaux hors limites génèrent des exceptions au lieu de renvoyer NULL.
spark.sql.legacy.timeParserPolicyla valeur par défaut a changé. Date/timel'analyse peut se comporter différemment.Les conversions implicites de chaînes en chiffres dans SQL peuvent échouer en mode ANSI.
-
Version Python : Python 3.13 est le moteur d'exécution. La
--additional-python-modulesfonctionnalité continue de fonctionner mais elle est obsolète. Envisagez de migrer vers--python-virtual-envpour un contrôle total des dépendances. -
AWS SDK : seul le SDK v2 est disponible. Si vos scripts utilisent boto3 (Python), aucune modification n'est nécessaire : boto3 continue de fonctionner. Pour les Scala/Java tâches utilisant directement le AWS SDK, migrez vers les API v2.
Reportez-vous à la documentation sur la migration de Spark :
-
Guide de migration : Spark Core
sur le site web d'Apache Spark -
Guide de migration : SQL, ensembles de données et DataFrame
sur le site Web d'Apache Spark -
Guide de migration : Streaming structuré
sur le site web d'Apache Spark -
Mise à niveau PySpark
sur le site Web d'Apache Spark
Migration depuis une version plus ancienne AWS Glue versions pour AWS Glue 6.0
-
Pour les étapes de migration relatives à la AWS Glue version 5.0 vers la version AWS Glue 5.1, consultezMigration à partir de AWS Glue De 5,0 à AWS Glue 5.1.
-
Pour les étapes de migration relatives à la AWS Glue version 4.0 vers la AWS Glue version 5.0, consultezMigration à partir de AWS Glue 4,0 à AWS Glue 5.0.
-
Pour les étapes de migration relatives à la AWS Glue version 3.0 vers la AWS Glue version 5.0, consultezMigration à partir de AWS Glue 3,0 à AWS Glue 5.0.
-
Pour les étapes de migration relatives à la AWS Glue version 2.0 vers la AWS Glue version 5.0, consultezMigration à partir de AWS Glue 2,0 à AWS Glue 5.0.
-
Après avoir effectué les étapes ci-dessus, terminez la migration vers la AWS Glue version 6.0 en suivantMigration à partir de AWS Glue 5.1 à AWS Glue 6.0.
Migration de connecteurs et de pilotes JDBC pour AWS Glue 6.0
Pour en savoir plus sur les versions des connecteurs JDBC et de lac de données qui ont été mises à niveau, consultez :
Les modifications suivantes s'appliquent aux mises à niveau de la version OTF identifiées dans Annexe D : Mises à niveau du format de table ouverte la version AWS Glue 6.0.
Apache Iceberg
Notez les modifications suivantes :
Iceberg a été mis à niveau vers la version 1.11.0 avec prise en charge complète des spécifications d'Apache Iceberg version 3.
Type de données VARIANT avec destruction des variantes pour des requêtes de données semi-structurées optimisées.
Nanosecond-precision horodatages.
Types de données géospatiales (géométrie et géographie).
Les fonctionnalités Iceberg suivantes sont déjà prises en charge par AWS Glue ETL depuis la AWS Glue version 5.1 : vecteurs de suppression (fusion lors de la lecture à l'aide de Roaring Bitmaps stockées dans des fichiers Puffin) et suivi du lignage des lignes via des métadonnées. first-row-id
Apache Hudi
Notez les modifications suivantes :
Hudi est passé à la version 1.1.1.
Maintien de la prise en charge de l'accès en lecture et en écriture FTA sur les tables AWS Lake Formation enregistrées.
Delta Lake
Notez les modifications suivantes :
Delta Lake est passé à la version 4.2.0.
Maintien de la prise en charge de l'accès en lecture et en écriture FTA sur les tables AWS Lake Formation enregistrées.
Limitations connues
Les limites suivantes s'appliquent à la AWS Glue version 6.0 :
-
Les clés de chiffrement de table natives Iceberg ne sont pas prises en charge.
-
Les transformations multi-arguments Iceberg ne sont pas prises en charge.
-
Les nouveaux types de données Iceberg v3 ne sont pris en charge qu'avec Spark DataFrames. Ces fonctionnalités ne fonctionneront pas avec DynamicFrames.
-
Visual ETL dans AWS Glue Studio ne prend pas en charge les nouveaux types de données Iceberg v3. Si vous souhaitez utiliser ces nouvelles fonctionnalités avec Visual ETL, nous vous recommandons de migrer vos tâches ETL vers Amazon SageMaker Unified Studio.
-
Fine-grained le contrôle d'accès (FGAC) n'est pas pris en charge avec les colonnes VARIANT.
-
Les tables Iceberg créées avec
'format-version'='3'ne peuvent pas être lues par Athena SQL (erreur :Cannot read unsupported version 3). Utilisez Iceberg v2 pour une compatibilité multimoteur avec Athena.
Annexe A : Mises à niveau notables des dépendances
Voici les mises à niveau des dépendances :
| Dépendance | Version en AWS Glue 6.0 | Version en AWS Glue 5.1 | Version en AWS Glue 5.0 | Version 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 |
| Flèche | 18,3,0 | 12,0,1 | 12,0,1 | 7.0.0 |
| AWS Glue Client Data Catalog | 4.11.0 | 4.9.0 | 4.5.0 | 3.7.0 |
| AWS SDK pour Java | 2.44.6 (v2 uniquement) | 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 |
| Connecteur EMR DynamoDB | 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 |
Annexe B : Mises à niveau du pilote JDBC
Voici les mises à niveau du pilote JDBC :
| Pilote | Version du pilote JDBC 6.0 AWS Glue | Version du pilote JDBC en 5.1 AWS Glue | Version du pilote JDBC en 5.0 AWS Glue |
|---|---|---|---|
| MySQL | 8,0,33 | 8,0,33 | 8,0,33 |
| Microsoft SQL Server | 10,2,0 | 10,2,0 | 10,2,0 |
| Oracle Databases | 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 |
Annexe C : Mises à niveau des connecteurs
Les mises à niveau des connecteurs sont les suivantes :
| Connecteur | Version en AWS Glue 6.0 | Version en AWS Glue 5.1 | Version 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 |
| Connecteur EMR DynamoDB | 6.1.0 | 5.7.0 | 5.6.0 |
Annexe D : Mises à niveau du format de table ouverte
Les mises à niveau du format de table ouverte sont les suivantes :
| OTF | Version AWS Glue 6.0 | Version en AWS Glue 5.1 | Version en AWS Glue 5.0 | Version 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 |