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.
Themen
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=falsedass 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-firstJob-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.NoSuchFieldErrorDiese 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-firstverwendet.
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.EmrFileSystemKlasse ist nicht mehr verfügbar. Jobs, dies3://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üssensoftware.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:
JavaConversionsentfernt (verwendetCollectionConverters),MutableListentfernt (verwendetListBuffer), parallele Sammlungen erfordern einen separaten Import. -
Änderungen an der Spark 4.1-API:
SQLContextentfernt —SparkSessiondirekt 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 übergebenallow_abbrev=TrueSie 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 3inGlue version. -
Wählen Sie in der API
6.0imGlueVersion-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 derGlue versionaus. -
Wählen Sie in AWS Glue Studio die Option
Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3InGlue version. -
Wählen Sie in der API
6.0imGlueVersion-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
JavaConversionsdurchCollectionConverters. -
[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=falsebei 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-jarsauf 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 haben
spark.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-jarskompiliert wurde, schlägt mit oder fehl.NoSuchMethodErrorClassNotFoundExceptionKompilieren 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-modulesFunktion funktioniert weiterhin, ist aber veraltet. Erwägen Sie eine Migration zu, um die vollständige--python-virtual-envAbhä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:
-
Migrationshandbuch: Spark Core
auf der Apache Spark-Website -
Migrationshandbuch: SQL, Datensätze und DataFrame
auf der Apache Spark-Website -
Migrationshandbuch: Strukturiertes Streaming
auf der Apache Spark-Website -
Aktualisierung PySpark
auf der Apache Spark-Website
Migration von älteren AWS Glue Versionen zu AWS Glue 6.0
-
Die Schritte zur Migration von AWS Glue 5.0 auf AWS Glue 5.1 finden Sie unterMigration von AWS Glue 5,0 bis AWS Glue 5.1.
-
Die Schritte zur Migration von AWS Glue 4.0 auf AWS Glue 5.0 finden Sie unterMigration von AWS Glue 4.0 bis AWS Glue 5.0.
-
Die Schritte zur Migration von AWS Glue 3.0 auf AWS Glue 5.0 finden Sie unterMigration von AWS Glue 3.0 bis AWS Glue 5.0.
-
Die Schritte zur Migration von AWS Glue 2.0 auf AWS Glue 5.0 finden Sie unterMigration von AWS Glue 2,0 bis AWS Glue 5.0.
-
Nachdem Sie die obigen Schritte ausgeführt haben, beenden Sie die Migration auf AWS Glue 6.0 wie folgtMigration von AWS Glue 5.1 bis 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 3Verwenden 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 |