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=falseel 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-firstpekerjaan dengan JAR kustom yang menggabungkan versi lama AWS SDK untuk Java 2.x, pekerjaan Anda mungkin gagal dengan kesalahanjava.lang.NoSuchFieldErroratau 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-firstmenggunakan 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 menggunakans3://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:
JavaConversionsdihapus (gunakanCollectionConverters),MutableListdihapus (gunakanListBuffer), koleksi paralel memerlukan impor terpisah. -
Perubahan API Spark 4.1:
SQLContextdihapus - gunakanSparkSessionlangsung.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 passgetResolvedOptions()toallow_abbrev=Trueuntuk 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 3masukGlue version. -
Di API, pilih
GlueVersionparameter6.0dalam 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 3masukGlue version. -
Di API, pilih
GlueVersionparameter6.0dalam 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
JavaConversionsdenganCollectionConverters. -
[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=falsejika 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-jarske 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 mengatur
spark.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-jarsyang dikompilasi dengan Scala 2.12 gagal denganNoSuchMethodErroratau.ClassNotFoundExceptionKompilasi 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-envuntuk 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:
-
Panduan Migrasi: Spark Core
di situs web Apache Spark -
Panduan Migrasi: SQL, Kumpulan Data dan DataFrame
di situs web Apache Spark -
Panduan Migrasi: Streaming Terstruktur
di situs web Apache Spark -
Upgrade PySpark
di situs web Apache Spark
Bermigrasi dari yang lebih tua AWS Glue versi untuk AWS Glue 6.0
-
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 5.0 hingga AWS Glue 5.1, lihatMigrasi dari AWS Glue 5.0 hingga AWS Glue 5.1.
-
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 4.0 hingga AWS Glue 5.0, lihatMigrasi dari AWS Glue 4.0 ke AWS Glue 5.0.
-
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 3.0 ke AWS Glue 5.0, lihatMigrasi dari AWS Glue 3.0 ke AWS Glue 5.0.
-
Untuk langkah-langkah migrasi yang terkait dengan AWS Glue 2.0 hingga AWS Glue 5.0, lihatMigrasi dari AWS Glue 2.0 ke AWS Glue 5.0.
-
Setelah menyelesaikan langkah-langkah di atas, selesaikan migrasi ke AWS Glue 6.0 dengan mengikutiMigrasi dari AWS Glue 5.1 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 |