Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Peningkatan AI generatif untuk Apache Spark di AWS Lem
Upgrade Spark in AWS Glue memungkinkan insinyur data dan pengembang untuk meningkatkan dan memigrasikan pekerjaan AWS Glue Spark yang ada ke rilis Spark terbaru menggunakan AI generatif. Insinyur data dapat menggunakannya untuk memindai pekerjaan AWS Glue Spark mereka, menghasilkan rencana peningkatan, menjalankan rencana, dan memvalidasi output. Ini mengurangi waktu dan biaya peningkatan Spark dengan mengotomatiskan pekerjaan yang tidak dibedakan untuk mengidentifikasi dan memperbarui skrip, konfigurasi, dependensi, metode, dan fitur Spark.
Cara kerjanya
Saat Anda menggunakan analisis peningkatan, AWS Glue mengidentifikasi perbedaan antara versi dan konfigurasi dalam kode pekerjaan Anda untuk menghasilkan rencana peningkatan. Paket upgrade merinci semua perubahan kode, dan langkah-langkah migrasi yang diperlukan. Selanjutnya, AWS Glue membangun dan menjalankan aplikasi yang ditingkatkan di lingkungan untuk memvalidasi perubahan dan menghasilkan daftar perubahan kode bagi Anda untuk memigrasikan pekerjaan Anda. Anda dapat melihat skrip yang diperbarui bersama dengan ringkasan yang merinci perubahan yang diusulkan. Setelah menjalankan pengujian Anda sendiri, terima perubahan dan pekerjaan AWS Glue akan diperbarui secara otomatis ke versi terbaru dengan skrip baru.
Proses analisis peningkatan dapat memakan waktu untuk diselesaikan, tergantung pada kompleksitas pekerjaan dan beban kerja. Hasil analisis peningkatan akan disimpan di jalur Amazon S3 yang ditentukan, yang dapat ditinjau untuk memahami peningkatan dan masalah kompatibilitas potensial. Setelah meninjau hasil analisis peningkatan, Anda dapat memutuskan apakah akan melanjutkan dengan peningkatan aktual atau membuat perubahan yang diperlukan pada pekerjaan sebelum memutakhirkan.
Prasyarat
Prasyarat berikut diperlukan untuk menggunakan AI generatif untuk meningkatkan pekerjaan di AWS Glue:
-
AWS Pekerjaan lem 2 - hanya PySpark pekerjaan AWS Lem 2 yang dapat ditingkatkan ke AWS Lem 5.
-
Izin IAM diperlukan untuk memulai analisis, meninjau hasil, dan meningkatkan pekerjaan Anda. Untuk informasi lebih lanjut, lihat contoh di Izin bagian di bawah ini.
-
Jika menggunakan AWS KMS untuk mengenkripsi artefak analisis, maka AWS AWS KMS izin tambahan diperlukan. Untuk informasi lebih lanjut, lihat contoh di AWS KMS kebijakan bagian di bawah ini.
Izin
-
Perbarui kebijakan IAM penelepon dengan izin berikut:
-
Perbarui peran Eksekusi pekerjaan yang Anda tingkatkan untuk menyertakan kebijakan in-line berikut:
{ "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "ARN of the Amazon S3 path provided on API", "ARN of the Amazon S3 path provided on API/*" ] }Misalnya, jika Anda menggunakan jalur Amazon S3
s3://amzn-s3-demo-bucket/upgraded-result, maka kebijakannya adalah:{ "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/", "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/*" ] }
AWS KMS kebijakan
Untuk meneruskan AWS KMS kunci kustom Anda sendiri saat memulai analisis, silakan lihat bagian berikut untuk mengonfigurasi izin yang sesuai pada AWS KMS kunci.
Kebijakan ini memastikan bahwa Anda memiliki izin enkripsi dan dekripsi pada AWS KMS kunci.
{ "Effect": "Allow", "Principal":{ "AWS": "<IAM Customer caller ARN>" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", ], "Resource": "<key-arn-passed-on-start-api>" }
Menjalankan analisis peningkatan dan menerapkan skrip pemutakhiran
Anda dapat menjalankan analisis peningkatan, yang akan menghasilkan rencana peningkatan pada pekerjaan yang Anda pilih dari tampilan Pekerjaan.
-
Dari Pekerjaan, pilih pekerjaan Glu AWS e 2.0, lalu pilih J alankan analisis peningkatan dari menu T indakan.
-
Dalam modal, pilih jalur untuk menyimpan rencana peningkatan yang dihasilkan di jalur Hasil. Ini harus berupa bucket Amazon S3 yang dapat Anda akses dan tulis.
-
Konfigurasikan opsi tambahan, jika diperlukan:
-
Jalankan konfigurasi — opsional: Konfigurasi run adalah pengaturan opsional yang memungkinkan Anda untuk menyesuaikan berbagai aspek proses validasi yang dilakukan selama analisis peningkatan. Konfigurasi ini digunakan untuk menjalankan skrip yang ditingkatkan dan memungkinkan Anda untuk memilih properti lingkungan komputasi (tipe pekerja, jumlah pekerja, dll). Catatan Anda harus menggunakan akun pengembang non-produksi untuk menjalankan validasi pada kumpulan data sampel sebelum meninjau, menerima perubahan, dan menerapkannya ke lingkungan produksi. Konfigurasi run mencakup parameter yang dapat disesuaikan berikut:
-
Jenis pekerja: Anda dapat menentukan jenis pekerja yang akan digunakan untuk proses validasi, memungkinkan Anda memilih sumber daya komputasi yang sesuai berdasarkan kebutuhan Anda.
-
Jumlah pekerja: Anda dapat menentukan jumlah pekerja yang akan disediakan untuk proses validasi, memungkinkan Anda untuk menskalakan sumber daya sesuai dengan kebutuhan beban kerja Anda.
-
Batas waktu pekerjaan (dalam menit): Parameter ini memungkinkan Anda menetapkan batas waktu untuk proses validasi, memastikan bahwa pekerjaan dihentikan setelah durasi tertentu untuk mencegah konsumsi sumber daya yang berlebihan.
-
Konfigurasi keamanan: Anda dapat mengonfigurasi pengaturan keamanan, seperti enkripsi dan kontrol akses, untuk memastikan perlindungan data dan sumber daya Anda selama proses validasi.
-
Parameter pekerjaan tambahan: Jika diperlukan, Anda dapat menambahkan parameter pekerjaan baru untuk lebih menyesuaikan lingkungan eksekusi untuk proses validasi.
Dengan memanfaatkan konfigurasi run, Anda dapat menyesuaikan proses validasi agar sesuai dengan kebutuhan spesifik Anda. Misalnya, Anda dapat mengonfigurasi proses validasi untuk menggunakan kumpulan data yang lebih kecil, yang memungkinkan analisis selesai lebih cepat dan mengoptimalkan biaya. Pendekatan ini memastikan bahwa analisis peningkatan dilakukan secara efisien sambil meminimalkan pemanfaatan sumber daya dan biaya terkait selama fase validasi.
-
-
Konfigurasi enkripsi - opsional:
-
Aktifkan enkripsi artefak upgrade: Aktifkan enkripsi saat diam saat menulis data ke jalur hasil. Jika Anda tidak ingin mengenkripsi artefak peningkatan Anda, biarkan opsi ini tidak dicentang.
-
-
-
Pilih Jalankan untuk memulai analisis peningkatan. Saat analisis sedang berjalan, Anda dapat melihat hasilnya pada tab Analisis Upgrade. Jendela detail analisis akan menunjukkan kepada Anda informasi tentang analisis serta tautan ke artefak peningkatan.
-
Jalur hasil — di sinilah ringkasan hasil dan skrip pemutakhiran disimpan.
-
Skrip yang ditingkatkan di Amazon S3 — lokasi skrip pemutakhiran di Amazon S3. Anda dapat melihat skrip sebelum menerapkan upgrade.
-
Ringkasan upgrade di Amazon S3 — lokasi ringkasan peningkatan di Amazon S3. Anda dapat melihat ringkasan peningkatan sebelum menerapkan peningkatan.
-
-
Ketika analisis pemutakhiran berhasil diselesaikan, Anda dapat menerapkan skrip pemutakhiran untuk secara otomatis meningkatkan pekerjaan Anda dengan memilih Ter apkan skrip yang ditingkatkan.
Setelah diterapkan, versi AWS Glue akan diperbarui ke 4.0. Anda dapat melihat skrip baru di tab Script.
Memahami ringkasan peningkatan
Contoh ini menunjukkan proses upgrade pekerjaan AWS Glue dari versi 2.0 ke versi 4.0. Pekerjaan sampel membaca data produk dari bucket Amazon S3, menerapkan beberapa transformasi ke data menggunakan Spark SQL, dan kemudian menyimpan hasil yang diubah kembali ke bucket Amazon S3.
from awsglue.transforms import * from pyspark.context import SparkContext from awsglue.context import GlueContext from pyspark.sql.types import * from pyspark.sql.functions import * from awsglue.job import Job import json from pyspark.sql.types import StructType sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/" schema_location = ( "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/" ) products_schema_string = spark.read.text( f"{schema_location}schemas/products_schema" ).first()[0] product_schema = StructType.fromJson(json.loads(products_schema_string)) products_source_df = ( spark.read.option("header", "true") .schema(product_schema) .option( "path", f"{gdc_database}products/", ) .csv(f"{gdc_database}products/") ) products_source_df.show() products_temp_view_name = "spark_upgrade_demo_product_view" products_source_df.createOrReplaceTempView(products_temp_view_name) query = f"select {products_temp_view_name}.*, format_string('%0$s-%0$s', category, subcategory) as unique_category from {products_temp_view_name}" products_with_combination_df = spark.sql(query) products_with_combination_df.show() products_with_combination_df.createOrReplaceTempView(products_temp_view_name) product_df_attribution = spark.sql( f""" SELECT *, unbase64(split(product_name, ' ')[0]) as product_name_decoded, unbase64(split(unique_category, '-')[1]) as subcategory_decoded FROM {products_temp_view_name} """ ) product_df_attribution.show() product_df_attribution.write.mode("overwrite").option("header", "true").option( "path", f"{gdc_database}spark_upgrade_demo_product_agg/" ).saveAsTable("spark_upgrade_demo_product_agg", external=True) spark_upgrade_demo_product_agg_table_df = spark.sql( f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'" ) spark_upgrade_demo_product_agg_table_df.show() job.commit()
from awsglue.transforms import * from pyspark.context import SparkContext from awsglue.context import GlueContext from pyspark.sql.types import * from pyspark.sql.functions import * from awsglue.job import Job import json from pyspark.sql.types import StructType sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) spark = glueContext.spark_session # change 1 spark.conf.set("spark.sql.adaptive.enabled", "false") # change 2 spark.conf.set("spark.sql.legacy.pathOptionBehavior.enabled", "true") job = Job(glueContext) gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/" schema_location = ( "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/" ) products_schema_string = spark.read.text( f"{schema_location}schemas/products_schema" ).first()[0] product_schema = StructType.fromJson(json.loads(products_schema_string)) products_source_df = ( spark.read.option("header", "true") .schema(product_schema) .option( "path", f"{gdc_database}products/", ) .csv(f"{gdc_database}products/") ) products_source_df.show() products_temp_view_name = "spark_upgrade_demo_product_view" products_source_df.createOrReplaceTempView(products_temp_view_name) # change 3 query = f"select {products_temp_view_name}.*, format_string('%1$s-%1$s', category, subcategory) as unique_category from {products_temp_view_name}" products_with_combination_df = spark.sql(query) products_with_combination_df.show() products_with_combination_df.createOrReplaceTempView(products_temp_view_name) # change 4 product_df_attribution = spark.sql( f""" SELECT *, try_to_binary(split(product_name, ' ')[0], 'base64') as product_name_decoded, try_to_binary(split(unique_category, '-')[1], 'base64') as subcategory_decoded FROM {products_temp_view_name} """ ) product_df_attribution.show() product_df_attribution.write.mode("overwrite").option("header", "true").option( "path", f"{gdc_database}spark_upgrade_demo_product_agg/" ).saveAsTable("spark_upgrade_demo_product_agg", external=True) spark_upgrade_demo_product_agg_table_df = spark.sql( f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'" ) spark_upgrade_demo_product_agg_table_df.show() job.commit()
Berdasarkan ringkasan, ada empat perubahan yang diusulkan oleh AWS Glue agar berhasil meningkatkan skrip dari AWS Glue 2.0 ke AWS Glue 4.0:
-
Konfigurasi Spark SQL (spark.sql.adaptive.enabled): Perubahan ini adalah untuk mengembalikan perilaku aplikasi karena fitur baru untuk eksekusi kueri adaptif Spark SQL diperkenalkan mulai Spark 3.2. Anda dapat memeriksa perubahan konfigurasi ini dan selanjutnya dapat mengaktifkan atau menonaktifkannya sesuai preferensi mereka.
-
DataFrame Perubahan API: Opsi jalur tidak dapat hidup berdampingan dengan DataFrameReader operasi lain seperti
load(). Untuk mempertahankan perilaku sebelumnya, AWS Glue memperbarui skrip untuk menambahkan konfigurasi SQL baru (spark.sq OptionBehavior.enabled l.legacy.path). -
Perubahan Spark SQL API: Perilaku
strfmtinformat_string(strfmt, obj, ...)telah diperbarui untuk melarang0$sebagai argumen pertama. Untuk memastikan kompatibilitas, AWS Glue telah memodifikasi skrip untuk digunakan1$sebagai argumen pertama sebagai gantinya. -
Perubahan Spark SQL API:
unbase64Fungsi ini tidak mengizinkan input string yang salah format. Untuk mempertahankan perilaku sebelumnya, AWS Glue memperbarui skrip untuk menggunakantry_to_binaryfungsi.
Menghentikan analisis peningkatan yang sedang berlangsung
Anda dapat membatalkan analisis peningkatan yang sedang berlangsung atau hanya menghentikan analisis.
-
Pilih tab Analisis Upgrade.
-
Pilih pekerjaan yang sedang berjalan, lalu pilih Ber henti. Ini akan menghentikan analisis. Anda kemudian dapat menjalankan analisis peningkatan lain pada pekerjaan yang sama.
Pertimbangan-pertimbangan
Saat Anda mulai menggunakan Upgrade Spark, ada beberapa aspek penting yang perlu dipertimbangkan untuk penggunaan layanan yang optimal.
-
Lingkup dan Batasan Layanan: Rilis saat ini berfokus pada peningkatan PySpark kode dari AWS Glue versi 2.0 ke versi 5.0. Pada saat ini, layanan menangani PySpark kode yang tidak bergantung pada dependensi pustaka tambahan. Anda dapat menjalankan peningkatan otomatis hingga 10 pekerjaan secara bersamaan dalam satu AWS akun, memungkinkan Anda meningkatkan beberapa pekerjaan secara efisien sambil mempertahankan stabilitas sistem.
-
Hanya PySpark pekerjaan yang didukung.
-
Analisis peningkatan akan habis setelah 24 jam.
-
Hanya satu analisis peningkatan aktif yang dapat dijalankan pada satu waktu untuk satu pekerjaan. Pada tingkat akun, hingga 10 analisis peningkatan aktif dapat dijalankan secara bersamaan.
-
-
Mengoptimalkan Biaya Selama Proses Peningkatan: Karena Spark Upgrade menggunakan AI generatif untuk memvalidasi rencana peningkatan melalui beberapa iterasi, dengan setiap iterasi berjalan sebagai pekerjaan AWS Glue di akun Anda, sangat penting untuk mengoptimalkan konfigurasi proses validasi untuk efisiensi biaya. Untuk mencapai hal ini, sebaiknya tentukan Konfigurasi Jalankan saat memulai Analisis Upgrade sebagai berikut:
-
Gunakan akun pengembang non-produksi dan pilih kumpulan data tiruan sampel yang mewakili data produksi Anda tetapi ukurannya lebih kecil untuk validasi dengan Spark Upgrade.
-
Menggunakan sumber daya komputasi berukuran tepat, seperti G.1X pekerja, dan memilih jumlah pekerja yang sesuai untuk memproses data sampel Anda.
-
Mengaktifkan penskalaan otomatis pekerjaan AWS Glue bila berlaku untuk menyesuaikan sumber daya secara otomatis berdasarkan beban kerja.
Misalnya, jika pekerjaan produksi Anda memproses terabyte data dengan 20 G.2X pekerja, Anda dapat mengonfigurasi pekerjaan upgrade untuk memproses beberapa gigabytes data representatif dengan 2 G.2X pekerja dan penskalaan otomatis diaktifkan untuk validasi.
-
-
Praktik Terbaik: Kami sangat menyarankan untuk memulai perjalanan peningkatan Anda dengan pekerjaan non-produksi. Pendekatan ini memungkinkan Anda untuk membiasakan diri dengan alur kerja peningkatan, dan memahami bagaimana layanan menangani berbagai jenis pola kode Spark.
-
Alarm dan pemberitahuan: Saat menggunakan fitur peningkatan AI Generatif pada pekerjaan, pastikan bahwa alarms/notifications untuk pekerjaan yang gagal dimatikan. Selama proses peningkatan, mungkin ada hingga 10 pekerjaan yang gagal dijalankan di akun Anda sebelum artefak yang ditingkatkan disediakan.
-
Aturan deteksi anomali: Matikan aturan deteksi anomali pada Pekerjaan yang sedang ditingkatkan juga, karena data yang ditulis ke folder keluaran selama proses pekerjaan menengah mungkin tidak dalam format yang diharapkan saat validasi peningkatan sedang berlangsung.
-
Gunakan analisis peningkatan dengan pekerjaan idempotent: Gunakan analisis peningkatan dengan pekerjaan idempotent untuk memastikan setiap upaya menjalankan pekerjaan validasi berikutnya mirip dengan yang sebelumnya, dan tidak mengalami masalah. Pekerjaan idempotent adalah pekerjaan yang dapat dijalankan beberapa kali dengan data input yang sama, dan mereka akan menghasilkan output yang sama setiap kali. Saat menggunakan peningkatan AI Generatif untuk Apache Spark di AWS Glue, layanan akan menjalankan beberapa iterasi pekerjaan Anda sebagai bagian dari proses validasi. Selama setiap iterasi, itu akan membuat perubahan pada kode dan konfigurasi Spark Anda untuk memvalidasi rencana peningkatan. Jika pekerjaan Spark Anda tidak berpotensi, menjalankannya beberapa kali dengan data input yang sama dapat menyebabkan masalah.
Wilayah yang didukung
Upgrade AI generatif untuk Apache Spark tersedia di wilayah berikut:
-
Asia Pasifik: Tokyo (ap-northeast-1), Seoul (ap-northeast-2), Mumbai (ap-selatan-1), Singapura (ap-Southeast-1), dan Sydney (ap-Southeast-2)
-
Amerika Utara: Kanada (ca-central-1)
-
Eropa: Frankfurt (eu-central-1), Stockholm (eu-utara-1), Irlandia (eu-barat-1), London (eu-barat-2), dan Paris (eu-barat-3)
-
Amerika Selatan: São Paulo (sa-east-1)
-
Amerika Serikat: Virginia Utara (us-east-1), Ohio (us-east-2), dan Oregon (us-west-2)
Cross-region kesimpulan dalam Upgrade Spark
Spark Upgrades didukung oleh Amazon Bedrock dan memanfaatkan inferensi lintas wilayah (CRIS). Dengan CRIS, Spark Upgrades akan secara otomatis memilih wilayah optimal dalam geografi Anda (seperti yang dijelaskan secara lebih rinci di sini) untuk memproses permintaan inferensi Anda, memaksimalkan sumber daya komputasi yang tersedia dan ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Tidak ada biaya tambahan untuk menggunakan inferensi lintas wilayah.
Cross-region permintaan inferensi disimpan dalam Wil AWS ayah yang merupakan bagian dari geografi tempat data awalnya berada. Misalnya, permintaan yang dibuat di AS disimpan di Wil AWS ayah di AS. Meskipun data tetap disimpan hanya di wilayah utama, saat menggunakan inferensi lintas wilayah, petunjuk input dan hasil keluaran Anda dapat bergerak di luar wilayah utama Anda. Semua data akan dikirim terenkripsi di seluruh jaringan aman Amazon.