View a markdown version of this page

Migrating AWS Glue untuk pekerjaan Spark ke AWS Glue versi 6.0 - AWS Lem

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Migrating AWS Glue untuk pekerjaan Spark ke AWS Glue versi 6.0

Topik ini menjelaskan perubahan antara AWS Glue versi 5.1 dan 6.0 untuk memungkinkan Anda memigrasikan aplikasi Spark dan pekerjaan ETL ke AWS Glue 6.0. Ini juga menjelaskan fitur-fitur di AWS Glue 6.0 dan keuntungan menggunakannya.

Untuk menggunakan fitur ini dengan pekerjaan AWS Glue ETL Anda, pilih 6.0 Glue version saat membuat pekerjaan Anda.

Fitur baru

Bagian ini menjelaskan fitur baru dan keunggulan AWS Glue versi 6.0.

  • Upgrade Apache Spark dari 3.5.6 di AWS Glue 5.1 ke 4.1.1 di AWS Glue 6.0.

  • Upgrade Scala dari 2.12.18 ke 2.13.17.

  • Pembaruan Python dari 3.11 ke 3.13.

  • Open Table Formats (OTF) diperbarui ke Hudi 1.1.1, Iceberg 1.11.0, dan Delta Lake 4.2.0.

  • Format gunung es versi 3 - Memperluas tipe data dan struktur metadata yang ada untuk menambahkan kemampuan baru termasuk:

    • Jenis data VARIANT dengan penghancuran varian untuk manajemen data semi-terstruktur yang disederhanakan dan pembacaan yang lebih cepat.

    • Nanosecond-precision stempel waktu.

    • Jenis data geospasial (Geometri dan Geografi).

  • Spark Declarative Pipelines (SDP) — Kerangka kerja deklaratif baru untuk mendefinisikan pipeline data end-to-end menggunakan SQL atau DataFrame API, dengan dukungan untuk tabel streaming dan tampilan yang terwujud. Untuk informasi selengkapnya, lihat Saluran Pipa Deklaratif Spark.

  • Spark Connect untuk Sesi Interaktif — Memungkinkan konektivitas klien tipis ke Sesi AWS Glue Interaktif melalui protokol Spark Connect, mendukung alur kerja pengembangan jarak jauh.

  • Arrow-native Python UDFs/UDTFs - Peningkatan kinerja untuk fungsi yang ditentukan pengguna Python menggunakan format kolom Apache Arrow secara asli.

  • Customer-managed atau lingkungan virtual Python yang dihasilkan layanan (--python-virtual-env) - Anda dapat membangun dan menyediakan venv Python Anda sendiri yang melekat pada driver dan pel AWS Glue aksana Spark saat runtime, memberikan kontrol penuh atas manajemen ketergantungan. Ketika pekerjaan yang ada dimigrasikan ke AWS Glue 6.0, AWS Glue secara otomatis menghasilkan lingkungan virtual ini jika diperlukan.

  • Peningkatan streaming — Real-time mode untuk streaming stateless dengan latensi tingkat milidetik. Untuk informasi selengkapnya, lihat Mengaktifkan mode real-time untuk pekerjaan streaming.

  • Peningkatan konektor - Diperbarui Amazon Redshift, MongoDB, Snowflake, dan konektor lainnya. Lihat Lampiran C: Peningkatan konektor untuk detail versi lengkap.

Masalah umum dan batasan

Perhatikan masalah dan batasan berikut yang diketahui:

  • Mode ANSI diaktifkan secara default di Spark 4.1. Operasi yang sebelumnya mengembalikan NULL pada overflow (misalnya, aritmatika integer, operasi cast) sekarang memberikan pengecualian. Set spark.sql.ansi.enabled=false el untuk mengembalikan perilaku sebelumnya.

  • Spark Declarative Pipelines (SDP) adalah fitur baru dengan dukungan terbatas untuk konstruksi SQL tertentu. Lihat Saluran Pipa Deklaratif Spark dokumentasi untuk batasan saat ini.

  • Tabel Iceberg v3 yang dibuat di AWS Glue 6.0 tidak dapat dibaca oleh Athena SQL (kesalahan:Cannot read unsupported version 3). Gunakan Iceberg v2 untuk kompatibilitas lintas mesin dengan Athena.

  • Python 3.13 menghapus beberapa modul yang tidak digunakan lagi dan mengubah perilaku untuk beberapa fungsi perpustakaan standar. Tinjau panduan migrasi Python 3.13 untuk kompatibilitas.

  • AWS SDK untuk kompatibilitas Java 2.x dengan --user-jars-first - AWS Glue 6.0 termasuk AWS SDK untuk Java 2.x versi 2.44.6. Jika Anda menggunakan parameter --user-jars-first pekerjaan dengan JAR kustom yang menggabungkan versi lama AWS SDK untuk Java 2.x, pekerjaan Anda mungkin gagal dengan kesalahan java.lang.NoSuchFieldError atau kesalahan serupa. Kegagalan ini terjadi ketika SDK yang dibundel dalam JAR kustom Anda tidak memiliki kelas, bidang, atau metode yang AWS Glue bergantung pada runtime. Untuk menghindari masalah ini, pastikan bahwa JAR khusus yang Anda berikan --user-jars-first menggunakan AWS SDK untuk Java 2.x versi 2.44.6 atau yang lebih baru.

Melanggar perubahan

Perhatikan perubahan besar berikut:

  • EMRFS telah dihapus. S3A adalah satu-satunya sistem file S3 di AWS Glue 6.0. com.amazon.ws.emr.hadoop.fs.EmrFileSystemKelas tidak lagi tersedia. Pekerjaan menggunakan s3:// jalur menggunakan S3A secara otomatis. Jika sebelumnya Anda mengatur EMRFS-specific konfigurasi (misalnya,fs.s3.consistent.*), hapus.

  • AWS SDK untuk Java v1 telah dihapus. Hanya AWS SDK v2 (2.44.6) yang tersedia. Pekerjaan yang mengimpor com.amazonaws.services.* paket harus bermigrasi kesoftware.amazon.awssdk.services.*.

  • Scala ditingkatkan dari 2.12 menjadi 2.13. JAR khusus yang dikompilasi terhadap Scala 2.12 tidak berfungsi. Kompilasi ulang terhadap Scala 2.13.17. Perubahan utama: JavaConversions dihapus (gunakanCollectionConverters), MutableList dihapus (gunakanListBuffer), koleksi paralel memerlukan impor terpisah.

  • Perubahan API Spark 4.1:

    • SQLContextdihapus - gunakan SparkSession langsung.

    • Mode ANSI diaktifkan secara default — konversi tipe implisit dan luapan berperilaku berbeda.

    • Beberapa API usang dihapus. Lihat Panduan Migrasi Spark 4.1 di situs web Apache Spark.

  • CreateSession Validasi API — Validasi tambahan pada parameter sesi untuk Sesi Interaktif. Konfigurasi yang tidak valid yang sebelumnya diterima secara diam-diam sekarang mungkin mengembalikan kesalahan.

  • getResolvedOptionsperubahan perilaku — Pencocokan awalan argumen dinonaktifkan secara default (allow_abbrev=False). Gunakan nama argumen lengkap, atau pass getResolvedOptions() to allow_abbrev=True untuk mengembalikan perilaku lama.

Tindakan untuk bermigrasi ke AWS Glue 6.0

Untuk pekerjaan yang ada, ubah Glue version dari versi sebelumnya ke Glue 6.0 dalam konfigurasi pekerjaan.

  • Di AWS Glue Studio, pilih Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 masukGlue version.

  • Di API, pilih GlueVersion parameter 6.0 dalam operasi UpdateJob API.

Untuk pekerjaan baru, pilih Glue 6.0 kapan Anda membuat pekerjaan.

  • Di konsol, pilih Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0) masukGlue version.

  • Di AWS Glue Studio, pilih Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3 masukGlue version.

  • Di API, pilih GlueVersion parameter 6.0 dalam operasi CreateJob API.

Untuk membantu migrasi pekerjaan Anda, Anda dapat menggunakan peningkatan AI Generatif Apache Spark untuk meningkatkan pekerjaan AWS Glue ETL Anda dari AWS Glue versi yang lebih lama (2.0 dan yang lebih baru) ke AWS Glue versi terbaru.

Pemecahan masalah

Anda dapat menggunakan Agen Pem ecahan Masalah Spark untuk memecahkan masalah pekerjaan AWS Glue ETL Anda.

Daftar periksa migrasi

Tinjau daftar periksa ini untuk migrasi:

  • [Scala] Kompilasi ulang JAR khusus terhadap Scala 2.13.17. Ganti JavaConversions denganCollectionConverters.

  • [Python] Perbarui kode untuk kompatibilitas Python 3.13. Hapus penggunaan modul yang tidak digunakan lagi (misalnya,, impcgi,cgitb).

  • [Python] Perbarui referensi boto3 dari 1.40 menjadi 1.42.

  • [Spark SQL] Tinjau kueri untuk dampak mode ANSI. Tambahkan spark.sql.ansi.enabled=false jika perlu.

  • [SDK] Ganti impor AWS SDK v1 apa pun (com.amazonaws.*) dengan SDK v2 (software.amazon.awssdk.*).

  • [S3] Hapus EMRFS-specific konfigurasi. S3A sekarang menjadi konektor S3 default dan satu-satunya.

  • [Dependensi] Perbarui --extra-jars ke versi yang dikompilasi untuk Scala 2.13 dan Spark 4.1.

Migrasi dari AWS Glue 5.1 untuk AWS Glue 6.0

Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 5.1 akan ada di AWS Glue 6.0. Perhatikan perubahan berikut saat bermigrasi:

  • Sistem file S3: EMRFS tidak lagi tersedia. S3A adalah satu-satunya konektor S3. Jika sebelumnya Anda mengaturspark.hadoop.fs.s3a.endpoint.region, lanjutkan menggunakannya. Jika tidak disetel, pastikan titik akhir VPC atau konfigurasi jaringan memungkinkan S3A menyelesaikan wilayah yang benar.

  • Kompatibilitas biner Scala: AWS Glue 6.0 menggunakan Scala 2.13. Apa pun --extra-jars yang dikompilasi dengan Scala 2.12 gagal dengan NoSuchMethodError atau. ClassNotFoundException Kompilasi ulang semua JAR khusus Scala/Java .

  • Perubahan perilaku Spark SQL:

    • Mode ANSI AKTIF secara default. Overflow integer, cast tidak valid, dan indeks array di luar batas memberikan pengecualian alih-alih mengembalikan NULL.

    • spark.sql.legacy.timeParserPolicydefault berubah. Date/timepenguraian mungkin berperilaku berbeda.

    • Konversi string-ke-numerik implisit di SQL mungkin gagal dalam mode ANSI.

  • Versi Python: Python 3.13 adalah runtime. --additional-python-modulesFitur ini terus berfungsi tetapi tidak digunakan lagi. Pertimbangkan untuk bermigrasi ke --python-virtual-env untuk kontrol ketergantungan penuh.

  • AWS SDK: Hanya SDK v2 yang tersedia. Jika skrip Anda menggunakan boto3 (Python), tidak ada perubahan yang diperlukan - boto3 terus bekerja. Untuk Scala/Java pekerjaan yang menggunakan AWS SDK secara langsung, bermigrasi ke API v2.

Lihat dokumentasi migrasi Spark:

Bermigrasi dari yang lebih tua AWS Glue versi untuk AWS Glue 6.0

Konektor dan migrasi driver JDBC untuk AWS Glue 6.0

Untuk versi JDBC dan konektor data lake yang ditingkatkan, lihat:

Perubahan berikut berlaku untuk peningkatan versi OTF yang diidentifikasi dalam Lampiran D: Buka peningkatan format tabel untuk AWS Glue 6.0.

Gunung Es Apache

Perhatikan perubahan berikut:

  • Iceberg ditingkatkan ke 1.11.0 dengan dukungan penuh untuk spesifikasi Apache Iceberg versi 3.

  • Jenis data VARIANT dengan penghancuran varian untuk kueri data semi-terstruktur yang dioptimalkan.

  • Nanosecond-precision stempel waktu.

  • Jenis data geospasial (Geometri dan Geografi).

Fitur Iceberg berikut sudah didukung oleh AWS Glue ETL sejak AWS Glue 5.1: vektor penghapusan (merge-on-read menggunakan Roaring Bitmaps yang disimpan dalam file Puffin) dan pelacakan garis keturunan baris melalui metadata. first-row-id

Apache Hudi

Perhatikan perubahan berikut:

  • Hudi ditingkatkan ke 1.1.1.

  • Dukungan berkelanjutan untuk akses baca dan tulis FTA pada tabel AWS Lake Formation terdaftar.

Danau Delta

Perhatikan perubahan berikut:

  • Danau Delta ditingkatkan menjadi 4.2.0.

  • Dukungan berkelanjutan untuk akses baca dan tulis FTA pada tabel AWS Lake Formation terdaftar.

Keterbatasan yang Sudah Diketahui

Batasan berikut berlaku untuk AWS Glue 6.0:

  • Kunci enkripsi tabel asli Iceberg tidak didukung.

  • Transformasi multi-argumen Iceberg tidak didukung.

  • Tipe data Iceberg v3 baru hanya didukung dengan Spark DataFrames. Fitur-fitur ini tidak akan berfungsi dengan DynamicFrames.

  • Visual ETL di AWS Glue Studio tidak mendukung tipe data Iceberg v3 baru. Jika Anda ingin menggunakan fitur-fitur baru ini dengan Visual ETL, sebaiknya migrasikan pekerjaan ETL Anda ke Amazon SageMaker Unified Studio.

  • Fine-grained kontrol akses (FGAC) tidak didukung dengan kolom VARIANT.

  • Tabel gunung es yang dibuat dengan 'format-version'='3' tidak dapat dibaca oleh Athena SQL (kesalahan:Cannot read unsupported version 3). Gunakan Iceberg v2 untuk kompatibilitas lintas mesin dengan Athena.

Lampiran A: Peningkatan ketergantungan penting

Berikut ini adalah peningkatan ketergantungan:

Dependensi Versi dalam AWS Glue 6.0 Versi dalam AWS Glue 5.1 Versi dalam AWS Glue 5.0 Versi dalam 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
Skala 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
Panah 18.3.0 12.0.1 12.0.1 7.0.0
AWS Glue Klien Katalog Data 4.11.0 4.9.0 4.5.0 3.7.0
AWS SDK untuk Java 2.44.6 (hanya 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
JSON4 3,7,0-M11 3,7,0-M11 3,7,0-M11 3,7,0-M11
Konektor 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
Panda 2.3.3 N/A N/A N/A

Lampiran B: Peningkatan driver JDBC

Berikut ini adalah upgrade driver JDBC:

Driver Versi driver JDBC di 6.0 AWS Glue Versi driver JDBC di 5.1 AWS Glue Versi driver JDBC di 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
Database Oracle 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

pergeseran merah-jdbc42-2.2.7

pergeseran merah - jdbc42-2.1.0.29

pergeseran merah - jdbc42-2.1.0.29

MariaDB 3.5.7 N/A N/A

Lampiran C: Peningkatan konektor

Berikut ini adalah peningkatan konektor:

Konektor Versi dalam AWS Glue 6.0 Versi dalam AWS Glue 5.1 Versi dalam AWS Glue 5.0
Pergeseran Merah Spark 6.7.0 6.4.2 6.4.0
Kinesis Spark SQL 2.1.0 N/A N/A
MongoDB 11.0.1 10.3.0 10.3.0
Kepingan Salju 3.17.0 3.1.1 3.0.0
OpenSearch 2.0.0 1.2.0 1.2.0
Konektor EMR DynamoDB 6.1.0 5.7.0 5.6.0

Lampiran D: Buka peningkatan format tabel

Berikut ini adalah peningkatan format tabel terbuka:

OTF Versi dalam AWS Glue 6.0 Versi dalam AWS Glue 5.1 Versi dalam AWS Glue 5.0 Versi dalam AWS Glue 4.0
Hudi 1.1.1 1.0.2 0.15.0 0.12.1
Danau Delta 4.2.0 3.3.2 3.3.0 2.1.0
Gunung es 1.11.0 1.10.0 1.7.1 1.0.0