View a markdown version of this page

Migrating AWS Glue für Spark-Jobs zu AWS Glue Version 6.0 - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrating AWS Glue für Spark-Jobs zu AWS Glue Version 6.0

In diesem Thema werden die Änderungen zwischen AWS Glue Version 5.1 und 6.0 beschrieben, damit Sie Ihre Spark-Anwendungen und ETL-Jobs auf AWS Glue 6.0 migrieren können. Es beschreibt auch die Funktionen von AWS Glue 6.0 und die Vorteile seiner Verwendung.

Um diese Funktion für Ihre AWS Glue ETL-Jobs zu verwenden, wählen Sie 6.0 Glue version bei der Erstellung Ihrer Jobs die Option aus.

Neue Features

In diesem Abschnitt werden die neuen Funktionen und Vorteile der AWS Glue Version 6.0 beschrieben.

  • Apache Spark-Upgrade von 3.5.6 in AWS Glue 5.1 auf 4.1.1 in AWS Glue 6.0.

  • Scala-Upgrade von 2.12.18 auf 2.13.17.

  • Python-Upgrade von 3.11 auf 3.13.

  • Open Table Formats (OTF) wurde auf Hudi 1.1.1, Iceberg 1.11.0 und Delta Lake 4.2.0 aktualisiert.

  • Iceberg Format Version 3 — Erweitert Datentypen und bestehende Metadatenstrukturen um neue Funktionen, darunter:

    • VARIANT-Datentyp mit Varianten-Shredding für vereinfachtes halbstrukturiertes Datenmanagement und schnellere Lesevorgänge.

    • Nanosecond-precision Zeitstempel.

    • Geodatentypen (Geometrie und Geografie).

  • Spark Declarative Pipelines (SDP) — Ein neues deklaratives Framework zur Definition von durchgängigen Datenpipelines mithilfe von SQL oder DataFrame API mit Unterstützung für Streaming-Tabellen und materialisierte Ansichten. Weitere Informationen finden Sie unter Deklarative Spark-Pipelines.

  • Spark Connect für interaktive Sitzungen — Ermöglicht Thin-Client-Konnektivität zu AWS Glue interaktiven Sitzungen über das Spark Connect-Protokoll und unterstützt Remote-Entwicklungsworkflows.

  • Arrow-native Python UDFs/UDTFs — Verbesserte Leistung für benutzerdefinierte Python-Funktionen, die das Apache Arrow-Spaltenformat nativ verwenden.

  • Customer-managed oder eine vom Dienst generierte virtuelle Python-Umgebung (--python-virtual-env) — Sie können Ihr eigenes Python-Venv erstellen und bereitstellen, das zur Laufzeit AWS Glue an Spark-Treiber und -Executoren angehängt wird und so die volle Kontrolle über das Abhängigkeitsmanagement bietet. Wenn bestehende Jobs auf AWS Glue 6.0 migriert werden, AWS Glue wird diese virtuelle Umgebung bei Bedarf automatisch generiert.

  • Streaming-Verbesserungen — Real-time Modus für statusfreies Streaming mit Latenz im Millisekundenbereich. Weitere Informationen finden Sie unter Aktivierung des Echtzeitmodus für Streaming-Jobs.

  • Konnektor-Upgrades — Amazon Redshift, MongoDB, Snowflake und andere Konnektoren wurden aktualisiert. Vollständige Versionsdetails finden Sie unterAnhang C: Konnektor-Upgrades.

Bekannte Probleme und Einschränkungen

Beachten Sie die folgenden bekannten Probleme und Einschränkungen:

  • Der ANSI-Modus ist in Spark 4.1 standardmäßig aktiviert. Operationen, die zuvor bei einem Überlauf NULL zurückgegeben haben (z. B. Integer-Arithmetik, Cast-Operationen), lösen jetzt Ausnahmen aus. Legt fest, spark.sql.ansi.enabled=false dass vorheriges Verhalten wiederhergestellt wird.

  • Spark Declarative Pipelines (SDP) ist eine neue Funktion mit eingeschränkter Unterstützung für bestimmte SQL-Konstrukte. Aktuelle Einschränkungen finden Sie in der Deklarative Spark-Pipelines Dokumentation.

  • In AWS Glue 6.0 erstellte Iceberg v3-Tabellen können von Athena SQL nicht gelesen werden (Fehler:Cannot read unsupported version 3). Verwenden Sie Iceberg v2 für die Engine-übergreifende Kompatibilität mit Athena.

  • Python 3.13 entfernt mehrere veraltete Module und ändert das Verhalten einiger Standardbibliotheksfunktionen. Überprüfen Sie die Kompatibilität im Python 3.13-Migrationsleitfaden.

  • AWS Die Kompatibilität des SDK für Java 2.x mit --user-jars-first — AWS Glue 6.0 beinhaltet AWS das SDK für Java 2.x, Version 2.44.6. Wenn Sie den --user-jars-first Job-Parameter mit einer benutzerdefinierten JAR verwenden, die eine ältere Version des AWS SDK für Java 2.x bündelt, schlägt Ihr Job möglicherweise mit einem oder einem ähnlichen Fehler fehl. java.lang.NoSuchFieldError Diese Fehler treten auf, wenn im SDK, das in Ihrer benutzerdefinierten JAR enthalten ist, Klassen, Felder oder Methoden fehlen, von denen die AWS Glue Laufzeit abhängt. Um dieses Problem zu vermeiden, stellen Sie sicher, dass jedes benutzerdefinierte JAR, das Sie bereitstellen, AWS SDK für Java 2.x, Version 2.44.6 oder höher, --user-jars-first verwendet.

Abwärtskompatible Änderungen

Beachten Sie die folgenden grundlegenden Änderungen:

  • EMRFS wurde entfernt. S3A ist das einzige S3-Dateisystem in AWS Glue 6.0. Die com.amazon.ws.emr.hadoop.fs.EmrFileSystem Klasse ist nicht mehr verfügbar. Jobs, die s3:// Pfade verwenden, verwenden S3A automatisch. Wenn Sie zuvor EMRFS-specific Konfigurationen festgelegt haben (z. B.fs.s3.consistent.*), entfernen Sie sie.

  • AWS Das SDK für Java v1 wurde entfernt. Nur AWS SDK v2 (2.44.6) ist verfügbar. Jobs, zu denen com.amazonaws.services.* Pakete importiert werden, müssen software.amazon.awssdk.services.* migriert werden.

  • Scala wurde von 2.12 auf 2.13 aktualisiert. Benutzerdefinierte JARs, die gegen Scala 2.12 kompiliert wurden, funktionieren nicht. Kompilieren Sie erneut gegen Scala 2.13.17. Wichtigste Änderungen: JavaConversions entfernt (verwendetCollectionConverters), MutableList entfernt (verwendetListBuffer), parallele Sammlungen erfordern einen separaten Import.

  • Änderungen an der Spark 4.1-API:

    • SQLContextentfernt — SparkSession direkt verwenden.

    • Der ANSI-Modus ist standardmäßig aktiviert — implizite Typkonvertierungen und Überläufe verhalten sich unterschiedlich.

    • Mehrere veraltete APIs wurden entfernt. Weitere Informationen finden Sie im Spark 4.1-Migrationshandbuch auf der Apache Spark-Website.

  • CreateSession API-Validierung — Zusätzliche Überprüfung der Sitzungsparameter für interaktive Sitzungen. Ungültige Konfigurationen, die zuvor stillschweigend akzeptiert wurden, geben jetzt möglicherweise Fehler zurück.

  • getResolvedOptionsVerhaltensänderung — Die Zuordnung von Argumentpräfixen ist standardmäßig deaktiviert (allow_abbrev=False). Verwenden Sie den vollständigen Argumentnamen oder übergeben allow_abbrev=True Sie ihngetResolvedOptions(), um das alte Verhalten wiederherzustellen.

Aktionen, zu denen migriert werden soll AWS Glue 6.0

Ändern Sie bei vorhandenen Aufträgen die Glue version von der vorherigen Version auf Glue 6.0 in der Auftragskonfiguration.

  • Wählen Sie in AWS Glue Studio Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 inGlue version.

  • Wählen Sie in der API 6.0 im GlueVersion-Parameter in der UpdateJob-API-Operation aus.

Wählen Sie für neue Aufträge Glue 6.0 aus, wenn Sie Aufträge erstellen.

  • Wählen Sie in der Konsole Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0) in der Glue version aus.

  • Wählen Sie in AWS Glue Studio die Option Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 InGlue version.

  • Wählen Sie in der API 6.0 im GlueVersion-Parameter in der CreateJob-API-Operation aus.

Um Ihnen bei der Migration Ihrer Jobs zu helfen, können Sie Generative AI-Upgrades verwenden Apache Spark, um Ihre AWS Glue ETL-Jobs von älteren AWS Glue Versionen (2.0 und höher) auf die neueste AWS Glue Version zu aktualisieren.

Fehlerbehebung

Sie können den Spark Troubleshooting Agent verwenden, um Ihre AWS Glue ETL-Jobs zu beheben.

Checkliste für die Migration

Überprüfen Sie diese Checkliste für die Migration:

  • [Scala] Kompilieren Sie benutzerdefinierte JARs erneut gegen Scala 2.13.17. Ersetzen Sie JavaConversions durch CollectionConverters.

  • [Python] Aktualisiere den Code für die Python 3.13-Kompatibilität. Entfernen Sie die Verwendung veralteter Module (z. B.,imp,cgi). cgitb

  • [Python] Aktualisiere die Boto3-Referenzen von 1.40 auf 1.42.

  • [Spark SQL] Überprüfen Sie die Abfragen auf Auswirkungen auf den ANSI-Modus. Fügen Sie spark.sql.ansi.enabled=false bei Bedarf hinzu.

  • [SDK] Ersetzen Sie alle AWS SDK v1-Importe (com.amazonaws.*) durch SDK v2 (software.amazon.awssdk.*).

  • [S3] EMRFS-specific Konfigurationen entfernen. S3A ist jetzt der Standard- und einzige S3-Connector.

  • [Abhängigkeiten] Update --extra-jars auf Versionen, die für Scala 2.13 und Spark 4.1 kompiliert wurden.

Migration von AWS Glue 5.1 bis AWS Glue 6.0

Alle in AWS Glue 5.1 vorhandenen Jobparameter und Hauptfunktionen werden in AWS Glue 6.0 existieren. Beachten Sie die folgenden Änderungen bei der Migration:

  • S3-Dateisystem: EMRFS ist nicht mehr verfügbar. S3A ist der einzige S3-Anschluss. Wenn Sie es zuvor eingestellt habenspark.hadoop.fs.s3a.endpoint.region, verwenden Sie es weiterhin. Falls nicht gesetzt, stellen Sie sicher, dass Ihr VPC-Endpunkt oder Ihre Netzwerkkonfiguration es S3A ermöglicht, die richtige Region aufzulösen.

  • Scala-Binärkompatibilität: AWS Glue 6.0 verwendet Scala 2.13. Alles, was mit Scala 2.12 --extra-jars kompiliert wurde, schlägt mit oder fehl. NoSuchMethodError ClassNotFoundException Kompilieren Sie alle benutzerdefinierten JARs neu. Scala/Java

  • Verhaltensänderungen bei Spark SQL:

    • Der ANSI-Modus ist standardmäßig aktiviert. Ganzzahlüberlauf, ungültige Umrechnungen und Überschreitungen des Array-Indexes lösen Ausnahmen aus, anstatt NULL zurückzugeben.

    • spark.sql.legacy.timeParserPolicyStandardeinstellung geändert. Date/timeDas Parsen könnte sich anders verhalten.

    • Implizite Konvertierungen von Zeichenketten in Zahlen in SQL schlagen möglicherweise im ANSI-Modus fehl.

  • Python-Version: Python 3.13 ist die Laufzeit. Die --additional-python-modules Funktion funktioniert weiterhin, ist aber veraltet. Erwägen Sie eine Migration zu, um die vollständige --python-virtual-env Abhängigkeitskontrolle zu erhalten.

  • AWS SDK: Nur SDK v2 ist verfügbar. Wenn Ihre Skripte boto3 (Python) verwenden, ist keine Änderung erforderlich — boto3 funktioniert weiterhin. Migrieren Sie für Scala/Java Jobs, die das AWS SDK direkt verwenden, zu v2-APIs.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:

Migration von älteren AWS Glue Versionen zu AWS Glue 6.0

Connector- und JDBC-Treibermigration für AWS Glue 6.0

Die aktualisierten Versionen von JDBC- und Data-Lake-Konnektoren finden Sie unter:

Die folgenden Änderungen gelten für die in Anhang D: Verbesserungen des Open-Table-Formats Version 6.0 genannten OTF-Versionsupgrades. AWS Glue

Apache Iceberg

Beachten Sie folgende Änderungen:

  • Iceberg wurde auf 1.11.0 mit voller Unterstützung für die Spezifikationen von Apache Iceberg Version 3 aktualisiert.

  • VARIANT-Datentyp mit Varianten-Shredding für optimierte halbstrukturierte Datenabfragen.

  • Nanosecond-precision Zeitstempel.

  • Geodatentypen (Geometrie und Geografie).

Die folgenden Iceberg-Funktionen werden bereits seit AWS Glue 5.1 von AWS Glue ETL unterstützt: Löschvektoren (Zusammenführen beim Lesen mithilfe von in Puffin-Dateien gespeicherten Roaring Bitmaps) und Nachverfolgung der Zeilenabstammung anhand von Metadaten. first-row-id

Apache Hudi

Beachten Sie folgende Änderungen:

  • Hudi hat auf 1.1.1 aktualisiert.

  • Fortgesetzte Unterstützung für FTA-Lese- und Schreibzugriff auf AWS Lake Formation registrierte Tabellen.

Delta Lake

Beachten Sie folgende Änderungen:

  • Delta Lake wurde auf 4.2.0 aktualisiert.

  • Fortgesetzte Unterstützung für FTA-Lese- und Schreibzugriff auf AWS Lake Formation registrierte Tabellen.

Bekannte Beschränkungen

Die folgenden Einschränkungen gelten für AWS Glue 6.0:

  • Die Verschlüsselungsschlüssel für native Iceberg-Tabellen werden nicht unterstützt.

  • Iceberg-Transformationen mit mehreren Argumenten werden nicht unterstützt.

  • Die neuen Iceberg v3-Datentypen werden nur von Spark unterstützt. DataFrames Diese Funktionen funktionieren nicht mit DynamicFrames.

  • Visual ETL in AWS Glue Studio unterstützt die neuen Iceberg v3-Datentypen nicht. Wenn Sie diese neuen Funktionen mit Visual ETL verwenden möchten, empfehlen wir, Ihre ETL-Jobs zu Amazon SageMaker Unified Studio zu migrieren.

  • Fine-grained Die Zugriffskontrolle (FGAC) wird mit VARIANT-Spalten nicht unterstützt.

  • Mit erstellte Iceberg-Tabellen 'format-version'='3' können von Athena SQL nicht gelesen werden (Fehler:). Cannot read unsupported version 3 Verwenden Sie Iceberg v2 für die Engine-übergreifende Kompatibilität mit Athena.

Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten

Im Folgenden sind Abhängigkeits-Upgrades aufgeführt:

-Abhängigkeit Version in 6.0 AWS Glue Version in AWS Glue 5.1 Version in AWS Glue 5.0 Version in 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 Glue Datenkatalog-Client 4.11.0 4.9.0 4.5.0 3.7.0
AWS SDK für Java 2.44.6 (nur v2) 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
EMR-DynamoDB-Connector 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

Anhang B: Aktualisierungen von JDBC-Treibern

Die folgenden JDBC-Treiber-Upgrades sind:

Treiber JDBC-Treiberversion in 6.0 AWS Glue JDBC-Treiberversion in 5.1 AWS Glue JDBC-Treiberversion in 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-Datenbanken 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

rotshift-jdbc42-2.2.7

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.29

MariaDB 3.5.7 N/A N/A

Anhang C: Konnektor-Upgrades

Im Folgenden sind Konnektor-Upgrades aufgeführt:

Konnektor Version in 6.0 AWS Glue Version in AWS Glue 5.1 Version in 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
EMR-DynamoDB-Connector 6.1.0 5.7.0 5.6.0

Anhang D: Verbesserungen des Open-Table-Formats

Im Folgenden finden Sie die Verbesserungen des Open-Table-Formats:

OTF Version in 6.0 AWS Glue Version in AWS Glue 5.1 Version in AWS Glue 5.0 Version in 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