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, die es Ihnen ermöglichen, Ihre Spark-Anwendungen und ETL-Jobs auf AWS Glue 6.0 zu migrieren. Außerdem werden die Funktionen in AWS Glue 6.0 und die Vorteile ihrer Verwendung beschrieben.

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

Neue Features

In diesem Abschnitt werden die neuen Funktionen und Vorteile von 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.

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

    • VARIANT-Datentyp mit Varianten-Shredding für eine vereinfachte Verwaltung halbstrukturierter Daten und schnellere Lesevorgänge.

    • Nanosecond-precision Zeitstempel.

    • Geodatentypen (Geometrie und Geografie).

    Das Upgrade auf Iceberg v3 ist eine einseitige Änderung

    Wenn Sie eine Iceberg-Tabelle auf das Format Version 3 aktualisieren, können Sie sie nicht wieder auf Version 2 herunterstufen. Iceberg lehnt den Vorgang ab. ALTER TABLE ... SET TBLPROPERTIES('format-version'='2') Wenn Sie einen anderen Dienst verwenden, der Iceberg v3 nicht unterstützt, behalten Sie ihn als Iceberg v2-Tabelle bei und führen Sie kein Upgrade auf Version 3 durch.

  • Spark Declarative Pipelines (SDP) — Ein neues deklaratives Framework für die Definition von End-to-End-Daten-Pipelines 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 spaltenförmige Apache Arrow-Format nativ verwenden.

  • Customer-managed oder 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, generiert diese virtuelle Umgebung bei AWS Glue Bedarf automatisch. Weitere Informationen finden Sie unter Verwenden von virtuellen Python-Umgebungen mit AWS Glue.

  • 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.

  • Connector-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. Ganzzahl-Arithmetik, Umwandlungsoperationen), lösen jetzt Ausnahmen aus. Legt fest, spark.sql.ansi.enabled=false dass das vorherige 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. Informationen zur Kompatibilität finden Sie im Python 3.13-Migrationsleitfaden.

  • AWS SDK for Java 2.x-Kompatibilität mit --user-jars-first — AWS Glue 6.0 beinhaltet AWS SDK for 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 for Java 2.x bündelt, schlägt Ihr Job möglicherweise mit einem java.lang.NoSuchFieldError oder einem ähnlichen Fehler fehl. Diese Fehler treten auf, wenn dem in Ihrer benutzerdefinierten JAR enthaltenen SDK 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 for 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 6.0. AWS Glue 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 diese.

  • AWS SDK for 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 für Scala 2.12 kompiliert wurden, funktionieren nicht. Kompilieren Sie erneut gegen Scala 2.13.17. Wichtigste Änderungen: JavaConversions entfernt (verwendenCollectionConverters), MutableList entfernt (verwendenListBuffer), parallel 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 Migration Guide auf der Apache Spark-Website.

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

  • getResolvedOptionsVerhaltensänderung — Der Abgleich von Argumentpräfixen ist standardmäßig deaktiviert (allow_abbrev=False). Verwenden Sie den vollständigen Argumentnamen oder übergeben allow_abbrev=True Sie angetResolvedOptions(), 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 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 KI-Upgrades verwendenApache 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.

Hinweis

Sie können den Spark Troubleshooting Agent verwenden, um Fehler bei Ihren 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 mit Scala 2.13.17. Ersetzen Sie JavaConversions durch CollectionConverters.

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

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

  • [Spark SQL] Überprüfen Sie Abfragen auf Auswirkungen auf den ANSI-Modus. spark.sql.ansi.enabled=falseBei Bedarf hinzufügen.

  • [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-Anschluss.

  • [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 bestehenden Jobparameter und Hauptfunktionen, die in AWS Glue 5.1 vorhanden sind, werden auch in AWS Glue 6.0 verfügbar sein. 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 festgelegt, 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. Alle mit Scala --extra-jars 2.12 kompilierten Dateien schlagen 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. Ein Ganzzahlüberlauf, ungültige Umwandlungen und außerhalb der Grenzen des Array-Indexes lösen Ausnahmen aus, anstatt NULL zurückzugeben.

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

    • Implizite Konvertierungen von Zeichenketten in Zahlen in SQL können im ANSI-Modus fehlschlagen.

  • Python-Version: Python 3.13 ist die Laufzeit. Die --additional-python-modules Funktion funktioniert weiterhin. Erwägen Sie eine Migration zu, um die --python-virtual-env vollständige Abhängigkeitskontrolle zu erhalten. Die Schritte zur Migration finden Sie unterVerwenden von virtuellen Python-Umgebungen mit AWS Glue.

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

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

Von einer älteren Version migrieren AWS Glue Versionen zu AWS Glue 6.0

Gehen Sie wie folgt vor, um von einer älteren AWS Glue Version auf AWS Glue 6.0 zu migrieren:

Migration von Konnektoren und JDBC-Treibern 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 OTF-Versionsupgrades, die in Version 6.0 beschrieben Anhang D: Verbesserungen des Open-Table-Formats sind. AWS Glue

Apache Iceberg

Beachten Sie folgende Änderungen:

  • Iceberg wurde auf Version 1.11.0 aktualisiert und bietet volle Unterstützung für die Spezifikationen von Apache Iceberg Version 3.

  • 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ührung beim Lesen mithilfe von Roaring Bitmaps, die in Puffin-Dateien gespeichert sind) und Nachverfolgung der Zeilenabstammung anhand von Metadaten. first-row-id

Apache Hudi

Beachten Sie folgende Änderungen:

  • Hudi wurde auf Version 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 systemeigenen Tabellenverschlüsselungsschlüssel von Iceberg werden nicht unterstützt.

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

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

  • Visual ETL in AWS Glue Studio unterstützt die neuen Iceberg v3-Datentypen nicht. Um diese neuen Funktionen zu verwenden, verwenden Sie die AWS Glue API, das SDK oder AWS CLI. Alternativ können Sie Visual ETL in Amazon SageMaker Unified Studio verwenden, unterstützt von AWS Glue.

  • 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 for 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.1.8 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