View a markdown version of this page

Migrating AWS Glue pour Spark Jobs AWS Glue la version 6.0 - AWS Glue

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.

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=false pour 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-first job avec un JAR personnalisé qui regroupe une ancienne version du AWS SDK pour Java 2.x, votre job risque d'échouer avec une erreur similaire java.lang.NoSuchFieldError ou 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-first utilise 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.EmrFileSystem cours n'est plus disponible. Les tâches utilisant s3:// 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 JavaConversions supprimées (utilisationCollectionConverters), MutableList supprimées (utilisationListBuffer) et parallèles nécessitent une importation séparée.

  • Changements apportés à l'API Spark 4.1 :

    • SQLContextretiré — à utiliser SparkSession directement.

    • 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 ou allow_abbrev=True passez-le getResolvedOptions() à 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 3 dansGlue version.

  • Dans l’API, choisissez 6.0 dans le paramètre GlueVersion de 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) dans Glue version.

  • Dans AWS Glue Studio, choisissez Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 dansGlue version.

  • Dans l’API, choisissez 6.0 dans le paramètre GlueVersion de 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 JavaConversions par CollectionConverters.

  • [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-jars compilation avec Scala 2.12 échoue avec NoSuchMethodError ou. ClassNotFoundException Recompilez 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-modules fonctionnalité continue de fonctionner mais elle est obsolète. Envisagez de migrer vers --python-virtual-env pour 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 :

Migration depuis une version plus ancienne AWS Glue versions pour 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