Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi AWS Glue untuk pekerjaan Spark ke versi 3.0 AWS Glue
Topik ini menjelaskan perubahan antara AWS Glue versi 0.9, 1.0, 2.0 dan 3.0 untuk memungkinkan Anda memigrasikan aplikasi Spark dan pekerjaan ETL ke 3.0. AWS Glue
Untuk menggunakan fitur ini dengan tugas ETL AWS Glue Anda, pilih 3.0
untuk Glue version
saat membuat tugas Anda.
Topik
Fitur baru yang didukung
Bagian ini menjelaskan fitur dan keunggulan baru AWS Glue versi 3.0.
Ini didasarkan pada Apache Spark 3.1.1, yang memiliki optimasi dari Spark open-source dan dikembangkan oleh layanan AWS Glue EMR dan seperti eksekusi kueri adaptif, pembaca vektor, dan pengocokan dan penggabungan partisi yang dioptimalkan.
Driver JDBC yang ditingkatkan untuk semua sumber asli Glue termasuk MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB, dan pustaka dan dependensi Spark yang ditingkatkan yang dibawa oleh Spark 3.1.1.
Akses Amazon S3 yang dioptimalkan dengan EMRFS yang ditingkatkan dan mengaktifkan penghasil keluaran Amazon S3 yang dioptimalkan secara default.
Akses Katalog Data yang Dioptimalkan dengan indeks partisi, predikat push down, daftar partisi, dan klien metastore Hive yang ditingkatkan.
Integrasi dengan Lake Formation untuk tabel katalog yang diatur dengan penyaringan tingkat sel dan transaksi data lake.
Pengalaman Spark UI yang ditingkatkan dengan Spark 3.1.1 dengan metrik memori eksekutor Spark baru dan metrik streaming terstruktur Spark.
Mengurangi latensi startup meningkatkan waktu penyelesaian pekerjaan secara keseluruhan dan interaktivitas, mirip AWS Glue dengan 2.0.
Pekerjaan Spark ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah—dari minimum 10 menit hingga minimum 1 menit, mirip dengan 2.0. AWS Glue
Tindakan untuk bermigrasi ke 3.0 AWS Glue
Untuk pekerjaan yang ada, ubah Glue version
dari versi sebelumnya ke Glue 3.0
dalam konfigurasi pekerjaan.
Di konsol, pilih
Spark 3.1, Python 3 (Glue Version 3.0) or Spark 3.1, Scala 2 (Glue Version 3.0)
diGlue version
.Di AWS Glue Studio, pilih
Glue 3.0 - Supports spark 3.1, Scala 2, Python 3
diGlue version
.Di API, pilih
GlueVersion
parameter3.0
diUpdateJob
API.
Untuk pekerjaan baru, pilih Glue 3.0
kapan Anda membuat pekerjaan.
Di konsol, pilih
Spark 3.1, Python 3 (Glue Version 3.0) or Spark 3.1, Scala 2 (Glue Version 3.0)
diGlue version
.Di AWS Glue Studio, pilih
Glue 3.0 - Supports spark 3.1, Scala 2, Python 3
diGlue version
.Di API, pilih
GlueVersion
parameter3.0
diCreateJob
API.
Untuk melihat log peristiwa Spark AWS Glue 3.0, luncurkan server riwayat Spark yang ditingkatkan untuk Glue 3.0 menggunakan CloudFormation atau Docker.
Daftar cek migrasi
Tinjau daftar periksa ini untuk migrasi.
Apakah pekerjaan Anda tergantung pada HDFS? Jika ya, coba ganti HDFS dengan S3.
Cari jalur sistem file yang dimulai dengan
hdfs://
atau/
sebagai jalur DFS dalam kode skrip pekerjaan.Periksa apakah sistem file default Anda tidak dikonfigurasi dengan HDFS. Jika dikonfigurasi secara eksplisit, Anda perlu menghapus konfigurasi.
fs.defaultFS
Periksa apakah pekerjaan Anda berisi
dfs.*
parameter apa pun. Jika berisi, Anda perlu memverifikasi tidak apa-apa untuk menonaktifkan parameter.
Apakah pekerjaan Anda bergantung pada YARN? Jika ya, verifikasi dampaknya dengan memeriksa apakah pekerjaan Anda berisi parameter berikut. Jika berisi, Anda perlu memverifikasi tidak apa-apa untuk menonaktifkan parameter.
spark.yarn.*
Misalnya:
spark.yarn.executor.memoryOverhead spark.yarn.driver.memoryOverhead spark.yarn.scheduler.reporterThread.maxFailures
yarn.*
Misalnya:
yarn.scheduler.maximum-allocation-mb yarn.nodemanager.resource.memory-mb
Apakah pekerjaan Anda bergantung pada Spark 2.2.1 atau Spark 2.4.3? Jika ya, verifikasi dampaknya dengan memeriksa apakah pekerjaan Anda menggunakan fitur yang diubah di Spark 3.1.1.
https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-22-to-23
Misalnya
percentile_approx
fungsi, atauSparkSession
denganSparkSession.builder.getOrCreate()
ketika ada yang sudah adaSparkContext
.https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-23-to-24
Misalnya
array_contains
fungsi, atauCURRENT_DATE
,CURRENT_TIMESTAMP
fungsi denganspark.sql.caseSensitive=true
.
Apakah stoples ekstra pekerjaan Anda bertentangan di Glue 3.0?
Dari AWS Glue 0.9/1.0: Stoples tambahan yang disediakan dalam pekerjaan AWS Glue 0.9/1.0 yang ada dapat menimbulkan konflik classpath karena peningkatan atau dependensi baru yang tersedia di Glue 3.0. Anda dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter
--user-jars-first
AWS Glue pekerjaan atau dengan menaungi dependensi Anda.Dari AWS Glue 2.0: Anda masih dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter
--user-jars-first
AWS Glue pekerjaan atau dengan menaungi dependensi Anda.
Apakah pekerjaan Anda bergantung pada Scala 2.11?
AWS Glue3.0 menggunakan Scala 2.12 sehingga Anda perlu membangun kembali perpustakaan Anda dengan Scala 2.12 jika perpustakaan Anda bergantung pada Scala 2.11.
Apakah pustaka Python eksternal pekerjaan Anda bergantung pada Python 2.7/3.6?
Gunakan
--additional-python-modules
parameter alih-alih mengatur file telur/roda/zip di jalur pustaka Python.Perbarui pustaka dependen dari Python 2.7/3.6 ke Python 3.7 karena Spark 3.1.1 menghapus dukungan Python 2.7.
Migrasi dari AWS Glue 0,9 ke 3,0 AWS Glue
Perhatikan perubahan berikut saat bermigrasi:
AWS Glue0.9 menggunakan sumber terbuka Spark 2.2.1 dan AWS Glue 3.0 menggunakan Spark 3.1.1 yang dioptimalkan EMR.
Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan fitur yang dihapus tidak direferensikan.
Misalnya, Spark 3.1.1 tidak mengaktifkan UDF yang tidak diketik Scala-tetapi Spark 2.2 mengizinkannya.
Semua pekerjaan di AWS Glue 3.0 akan dieksekusi dengan waktu startup yang ditingkatkan secara signifikan. Pekerjaan Spark akan ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah karena latensi startup akan meningkat dari maksimum 10 menit menjadi maksimum 1 menit.
Perilaku logging telah berubah sejak AWS Glue 2.0.
Beberapa pembaruan ketergantungan, disorot dalamLampiran A: peningkatan ketergantungan penting.
Scala juga diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
Python 3.7 juga merupakan versi default yang digunakan untuk skrip Python, karena 0.9 AWS Glue hanya menggunakan Python 2.
Python 2.7 tidak didukung dengan Spark 3.1.1.
Mekanisme baru untuk menginstal modul Python tambahan tersedia.
AWS Glue3.0 tidak berjalan di Apache YARN, jadi pengaturan YARN tidak berlaku.
AWS Glue3.0 tidak memiliki Hadoop Distributed File System (HDFS).
Setiap stoples tambahan yang disediakan dalam AWS Glue 0.9 pekerjaan yang ada dapat membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 3.0 dari 0.9. Anda dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter
--user-jars-first
AWS Glue pekerjaan.AWS Glue3.0 belum mendukung alokasi dinamis, oleh karena itu ExecutorAllocationManager metrik tidak tersedia.
Dalam pekerjaan AWS Glue versi 3.0, Anda menentukan jumlah pekerja dan jenis pekerja, tetapi tidak menentukan
maxCapacity
.AWS Glue3.0 belum mendukung transformasi pembelajaran mesin.
AWS Glue3.0 belum mendukung titik akhir pengembangan.
Lihat dokumentasi migrasi Spark:
lihat Upgrade dari Spark SQL 2.2
ke 2.3 lihat Upgrade dari Spark SQL 2.3
ke 2.4 lihat Memutakhirkan dari Spark SQL 2.4
ke 3.0 lihat Memutakhirkan dari Spark SQL 3.0
ke 3.1 lihat Perubahan perilaku Datetime diharapkan sejak Spark 3.0
.
Migrasi dari AWS Glue 1.0 ke 3.0 AWS Glue
Perhatikan perubahan berikut saat bermigrasi:
AWS Glue1.0 menggunakan sumber terbuka Spark 2.4 dan AWS Glue 3.0 menggunakan Spark 3.1.1 yang dioptimalkan EMR.
Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan fitur yang dihapus tidak direferensikan.
Misalnya, Spark 3.1.1 tidak mengaktifkan UDF yang tidak diketik Scala-tetapi Spark 2.4 mengizinkannya.
Semua pekerjaan di AWS Glue 3.0 akan dieksekusi dengan waktu startup yang ditingkatkan secara signifikan. Pekerjaan Spark akan ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah karena latensi startup akan meningkat dari maksimum 10 menit menjadi maksimum 1 menit.
Perilaku logging telah berubah sejak AWS Glue 2.0.
Beberapa pembaruan ketergantungan, disorot
Scala juga diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
Python 3.7 juga merupakan versi default yang digunakan untuk skrip Python, karena 0.9 AWS Glue hanya menggunakan Python 2.
Python 2.7 tidak didukung dengan Spark 3.1.1.
Mekanisme baru untuk menginstal modul Python tambahan tersedia.
AWS Glue3.0 tidak berjalan di Apache YARN, jadi pengaturan YARN tidak berlaku.
AWS Glue3.0 tidak memiliki Hadoop Distributed File System (HDFS).
Setiap stoples tambahan yang disediakan dalam pekerjaan AWS Glue 1.0 yang ada dapat membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 3.0 dari 1.0. Anda dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter
--user-jars-first
AWS Glue pekerjaan.AWS Glue3.0 belum mendukung alokasi dinamis, oleh karena itu ExecutorAllocationManager metrik tidak tersedia.
Dalam pekerjaan AWS Glue versi 3.0, Anda menentukan jumlah pekerja dan jenis pekerja, tetapi tidak menentukan
maxCapacity
.AWS Glue3.0 belum mendukung transformasi pembelajaran mesin.
AWS Glue3.0 belum mendukung titik akhir pengembangan.
Lihat dokumentasi migrasi Spark:
Migrasi dari AWS Glue 2.0 ke AWS Glue 3.0
Perhatikan perubahan berikut saat bermigrasi:
Semua parameter pekerjaan yang ada dan fitur utama yang ada di AWS Glue 2.0 akan ada di AWS Glue 3.0.
Komitter yang dioptimalkan EMRFS S3 untuk menulis data Parket ke Amazon S3 diaktifkan secara default di 3.0. AWS Glue Namun, Anda masih dapat menonaktifkannya dengan menyetel
--enable-s3-parquet-optimized-committer
kefalse
.
AWS Glue2.0 menggunakan sumber terbuka Spark 2.4 dan AWS Glue 3.0 menggunakan Spark 3.1.1 yang dioptimalkan EMR.
Beberapa perubahan Spark saja mungkin memerlukan revisi skrip Anda untuk memastikan fitur yang dihapus tidak direferensikan.
Misalnya, Spark 3.1.1 tidak mengaktifkan UDF yang tidak diketik Scala-tetapi Spark 2.4 mengizinkannya.
AWS Glue3.0 juga dilengkapi pembaruan untuk EMRFS, driver JDBC yang diperbarui, dan inklusi pengoptimalan tambahan ke Spark sendiri yang disediakan oleh. AWS Glue
Semua pekerjaan di AWS Glue 3.0 akan dieksekusi dengan waktu startup yang ditingkatkan secara signifikan. Pekerjaan Spark akan ditagih dalam kenaikan 1 detik dengan durasi penagihan minimum 10x lebih rendah karena latensi startup akan meningkat dari maksimum 10 menit menjadi maksimum 1 menit.
Python 2.7 tidak didukung dengan Spark 3.1.1.
Beberapa pembaruan ketergantungan, disorot dalamLampiran A: peningkatan ketergantungan penting.
Scala juga diperbarui ke 2.12 dari 2.11, dan Scala 2.12 tidak kompatibel dengan Scala 2.11.
Setiap stoples tambahan yang disediakan dalam pekerjaan AWS Glue 2.0 yang ada dapat membawa dependensi yang bertentangan karena ada peningkatan di beberapa dependensi di 3.0 dari 2.0. Anda dapat menghindari konflik classpath di AWS Glue 3.0 dengan parameter
--user-jars-first
AWS Glue pekerjaan.AWS Glue3.0 memiliki paralelisme tugas Spark yang berbeda untuk konfigurasi driver/pelaksana dibandingkan dengan AWS Glue 2.0 dan meningkatkan kinerja dan memanfaatkan sumber daya yang tersedia dengan lebih baik. Keduanya
spark.driver.cores
danspark.executor.cores
dikonfigurasi ke jumlah core pada AWS Glue 3.0 (4 pada standar danG.1X
pekerja, dan 8 padaG.2X
pekerja). Konfigurasi ini tidak mengubah jenis pekerja atau perangkat keras untuk AWS Glue pekerjaan itu. Anda dapat menggunakan konfigurasi ini untuk menghitung jumlah partisi atau split agar sesuai dengan paralelisme tugas Spark di aplikasi Spark Anda.Secara umum, pekerjaan akan melihat kinerja yang serupa atau lebih baik dibandingkan dengan AWS Glue 2.0. Jika pekerjaan berjalan lebih lambat, Anda dapat meningkatkan paralelisme tugas dengan meneruskan argumen pekerjaan berikut:
key:
--executor-cores
value: <jumlah tugas yang diinginkan yang dapat berjalan secara paralel>
Nilai tidak boleh melebihi 2x jumlah vCPU pada tipe pekerja, yaitu 8 on, 16 on, 32
G.1X
G.4X
on danG.2X
64 on.G.8X
Anda harus berhati-hati saat memperbarui konfigurasi ini karena dapat memengaruhi kinerja pekerjaan karena peningkatan paralelisme menyebabkan memori dan tekanan disk, serta dapat menghambat sistem sumber dan target.
AWS Glue3.0 menggunakan Spark 3.1, yang mengubah perilaku memuat/menyimpan stempel waktu dari/ke file parket. Untuk detail selengkapnya, lihat Memutakhirkan dari Spark SQL 3.0
ke 3.1. Kami merekomendasikan untuk mengatur parameter berikut saat membaca/menulis data parket yang berisi kolom stempel waktu. Menyetel parameter tersebut dapat menyelesaikan masalah ketidakcocokan kalender yang terjadi selama peningkatan Spark 2 ke Spark 3, untuk AWS Glue Dynamic Frame dan Spark Data Frame. Gunakan opsi CORRECTED untuk membaca nilai datetime apa adanya; dan opsi LEGACY untuk rebase nilai datetime sehubungan dengan perbedaan kalender selama membaca.
- Key: --conf - Value: spark.sql.legacy.parquet.int96RebaseModeInRead=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.int96RebaseModeInWrite=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.datetimeRebaseModeInRead=[CORRECTED|LEGACY]
Lihat dokumentasi migrasi Spark:
Lampiran A: peningkatan ketergantungan penting
Berikut ini adalah peningkatan ketergantungan:
Dependensi | Versi dalam AWS Glue 0.9 | Versi dalam AWS Glue 1.0 | Versi dalam AWS Glue 2.0 | Versi dalam AWS Glue 3.0 |
---|---|---|---|---|
Spark | 2.2.1 | 2.4.3 | 2.4.3 | 3.1.1-amzn-0 |
Hadoop | 2.7.3-amzn-6 | 2.8.5-amzn-1 | 2.8.5-amzn-5 | 3.2.1-amzn-3 |
Skala | 2.11 | 2.11 | 2.11 | 2.12 |
Jackson | 2.7.x | 2.7.x | 2.7.x | 2.10.x |
Hive | 1.2 | 1.2 | 1.2 | 2.3.7-amzn-4 |
EMRFS | 2.20.0 | 2.30.0 | 2.38.0 | 2.46.0 |
JSON4 | 3.2.x | 3.5.x | 3.5.x | 3.6.6 |
Panah | T/A | 0.10.0 | 0.10.0 | 2.0.0 |
AWS GlueKlien katalog | T/A | T/A | 1.10.0 | 3.0.0 |
Lampiran B: Peningkatan driver JDBC
Berikut ini adalah upgrade driver JDBC:
Driver | Versi driver JDBC di versi sebelumnya AWS Glue | Versi driver JDBC di 3.0 AWS Glue |
---|---|---|
MySQL | 5.1 | 8.0.23 |
Microsoft SQL Server | 6.1.0 | 7.0.0 |
Database Oracle | 11.2 | 21.1 |
PostgreSQL | 42.1.0 | 42.2.18 |
MongoDB | 2.0.0 | 4.0.0 |