Migrasi AWS Glue untuk pekerjaan Spark ke versi 3.0 AWS Glue - AWS Glue

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.

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 parameter 3.0 di UpdateJobAPI.

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 parameter 3.0 di CreateJobAPI.

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, atau SparkSession dengan SparkSession.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 menentukanmaxCapacity.

  • AWS Glue3.0 belum mendukung transformasi pembelajaran mesin.

  • AWS Glue3.0 belum mendukung titik akhir pengembangan.

Lihat dokumentasi migrasi Spark:

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

  • 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 dan spark.executor.cores dikonfigurasi ke jumlah core pada AWS Glue 3.0 (4 pada standar dan G.1X pekerja, dan 8 pada G.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 dan G.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