Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Partisi beban kerja dengan eksekusi terbatas
Kesalahan dalam aplikasi Spark biasanya timbul dari skrip Spark yang tidak efisien, yang didistribusikan dalam memori eksekusi transformasi skala besar, dan kelainan set data. Ada banyak alasan yang dapat menyebabkan masalah kekurangan memori pada driver atau eksekutor, misalnya data skew, mencantumkan terlalu banyak objek, atau data shuffle besar. Masalah ini sering muncul bila Anda memproses sejumlah besar data backlog dengan Spark.
AWS Glue memungkinkan Anda untuk memecahkan masalah OOM dan membuat pemrosesan ETL Anda menjadi lebih mudah dengan pemartisian beban kerja. Dengan mengaktifkan pemartisian beban kerja, setiap eksekusi tugas ETL hanya mengambil data yang belum diproses, dengan batas atas pada ukuran set data atau jumlah file yang akan diproses dengan eksekusi tugas ini. Eksekusi tugas di masa depan akan memproses data yang tersisa. Misalnya, jika ada 1000 file yang harus diproses, Anda dapat mengatur jumlah file menjadi 500 dan memisahkan mereka menjadi dua eksekusi tugas.
Pemartisian beban kerja hanya didukung untuk sumber data Amazon S3.
Mengaktifkan partisi beban kerja
Anda dapat mengaktifkan eksekusi terbatas dengan secara manual menetapkan opsi dalam skrip Anda atau dengan menambahkan properti tabel katalog.
Untuk mengaktifkan pemartisian beban kerja dengan eksekusi terbatas dalam skrip Anda:
-
Untuk menghindari pemrosesan ulang data, aktifkan bookmark tugas di tugas baru atau tugas yang sudah ada. Untuk informasi selengkapnya, lihat Melacak Data yang Diproses Menggunakan Bookmark Tugas.
-
Ubah skrip Anda dan tetapkan batas yang dibatasi dalam pilihan tambahan di API AWS Glue
getSource
. Anda juga harus mengatur konteks transformasi untuk bookmark tugas untuk menyimpan elemenstate
. Sebagai contoh:Python
glueContext.create_dynamic_frame.from_catalog( database = "database", table_name = "table_name", redshift_tmp_dir = "", transformation_ctx = "datasource0", additional_options = { "boundedFiles" : "500", # need to be string # "boundedSize" : "1000000000" unit is byte } )
Skala
val datasource0 = glueContext.getCatalogSource( database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions( Map("boundedFiles" -> "500") // need to be string //"boundedSize" -> "1000000000" unit is byte ) ).getDynamicFrame()
val connectionOptions = JsonOptions( Map("paths" -> List(baseLocation), "boundedFiles" -> "30") ) val source = glueContext.getSource("s3", connectionOptions, "datasource0", "")
Untuk mengaktifkan pemartisian beban kerja dengan eksekusi terbatas dalam tabel Katalog Data Anda:
-
Atur pasangan nilai kunci dalam kolom
parameters
struktur tabel Anda dalam Katalog Data. Untuk informasi selengkapnya, lihat Melihat dan Mengedit Detail Tabel. -
Atur batas atas untuk ukuran set data atau jumlah file yang diproses:
Atur
boundedSize
dengan ukuran target set data dalam byte. Eksekusi tugas akan berhenti setelah mencapai ukuran target dari tabel.Atut
boundedFiles
dengan jumlah file target. Eksekusi tugas akan berhenti setelah memproses jumlah file target.
catatan
Anda hanya harus menetapkan salah satunya,
boundedSize
atauboundedFiles
, karena hanya satu batas yang didukung.
Menyiapkan AWS Glue pemicu untuk menjalankan pekerjaan secara otomatis
Setelah Anda mengaktifkan eksekusi terbatas, Anda dapat menyiapkan pemicu AWS Glue untuk secara otomatis menjalankan tugas dan secara bertahap memuat data dengan eksekusi berurutan. Buka konsol AWS Glue dan buat pemicu, atur waktu jadwal, dan lampirkan ke tugas Anda. Maka ia akan secara otomatis memicu eksekusi tugas berikutnya dan memproses batch data yang baru.
Anda juga dapat menggunakan alur kerja AWS Glue untuk mengatur beberapa tugas agar memproses data dari partisi yang berbeda secara paralel. Untuk informasi selengkapnya, lihat Pemicu AWS Glue dan Alur Kerja AWS Glue.
Untuk informasi lebih lanjut tentang kasus penggunaan dan opsi, silakan lihat blog Mengoptimalkan aplikasi Spark dengan pemartisian beban kerja di AWS Glue