Melacak data yang diproses menggunakan bookmark pekerjaan - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Melacak data yang diproses menggunakan bookmark pekerjaan

AWS Glue melacak data yang telah diproses selama eksekusi tugas ETL sebelumnya dengan mempertahankan informasi status dari eksekusi tugas. Informasi status yang dipertahankan ini disebut bookmark tugas. Bookmark tugas membantu AWS Glue mempertahankan informasi status dan mencegah pengolahan ulang data lama. Dengan bookmark tugas, Anda dapat memproses data baru saat menjalankan ulang berdasarkan pada interval yang dijadwalkan. Sebuah bookmark tugas terdiri dari status untuk berbagai elemen tugas, seperti sumber, transformasi, dan target. Misalnya, tugas ETL Anda mungkin membaca partisi baru dalam file Amazon S3. AWS Glue melacak partisi mana yang telah berhasil diproses oleh tugas untuk mencegah pemrosesan duplikat dan data duplikat di penyimpanan data target tugas.

Bookmark tugas diimplementasikan untuk sumber data JDBC, transformasi Relationalize, dan beberapa sumber Amazon Simple Storage Service (Amazon S3). Tabel berikut mencantumkan format sumber Amazon S3 yang didukung AWS Glue untuk bookmark tugas.

Versi AWS Glue Format sumber Amazon S3
Versi 0.9 JSON, CSV, Apache Avro, XML
Versi 1.0 dan yang lebih baru JSON, CSV, Apache Avro, XML, Parquet, ORC

Untuk informasi tentang versi AWS Glue, lihat Mendefinisikan properti pekerjaan untuk pekerjaan Spark.

Fitur bookmark pekerjaan memiliki fungsi tambahan saat diakses melalui AWS Glue skrip. Saat menelusuri skrip yang Anda buat, Anda mungkin melihat konteks transformasi, yang terkait dengan fitur ini. Untuk informasi selengkapnya, lihat Menggunakan bookmark pekerjaan.

Menggunakan bookmark pekerjaan di AWS Glue

Opsi bookmark tugas diberikan sebagai parameter ketika tugas dimulai. Tabel berikut menjelaskan opsi untuk pengaturan bookmark tugas pada konsol AWS Glue.

Bookmark tugas Deskripsi
Aktifkan Menyebabkan tugas memperbarui status setelah eksekusi untuk melacak data yang sebelumnya telah diproses. Jika tugas Anda memiliki sumber dengan support bookmark tugas, maka tugas akan melacak data yang diproses, dan ketika tugas berjalan, ia memproses data baru sejak pos pemeriksaan terakhir.
Nonaktifkan Bookmark tugas tidak digunakan, dan tugas selalu memproses seluruh set data. Anda bertanggung jawab untuk mengelola output dari eksekusi tugas sebelumnya. Ini adalah default.
Jeda

Memproses data tambahan sejak eksekusi terakhir yang berhasil atau data dalam kisaran yang diidentifikasi oleh sub-opsi berikutnya, tanpa memperbarui status bookmark terakhir. Anda bertanggung jawab untuk mengelola output dari eksekusi tugas sebelumnya. Dua sub-opsi-nya adalah:

  • job-bookmark-from<from-value>adalah ID run yang mewakili semua input yang diproses hingga proses terakhir yang berhasil sebelumnya dan termasuk ID run yang ditentukan. Masukan yang sesuai diabaikan.

  • job-bookmark-to<to-value>adalah ID run yang mewakili semua input yang diproses hingga proses terakhir yang berhasil sebelumnya dan termasuk ID run yang ditentukan. Input yang sesuai tidak termasuk input yang diidentifikasi oleh <from-value> diproses oleh tugas. Setiap masukan berikutnya nanti selain dari input ini juga dikecualikan untuk diproses.

Status bookmark tugas tidak diperbarui ketika rangkaian opsi ini ditentukan.

Sub-opsi bersifat opsional, namun ketika digunakan, kedua sub-opsi tersebut perlu disediakan.

Untuk detail tentang parameter yang diberikan ke sebuah tugas pada baris perintah, dan secara khusus untuk bookmark tugas, lihat Menggunakan parameter pekerjaan dalam pekerjaan AWS Glue.

Untuk sumber input Amazon S3, bookmark tugas AWS Glue memeriksa waktu modifikasi terakhir atas objek untuk memverifikasi objek mana yang perlu diproses ulang. Jika data sumber masukan Anda telah dimodifkasi sejak eksekusi tugas terakhir Anda, maka file akan diproses kembali ketika Anda menjalankan tugas itu lagi.

Untuk sumber JDBC, aturan-aturan berikut berlaku:

  • Untuk setiap tabel, AWS Glue menggunakan satu atau beberapa kolom sebagai kunci bookmark untuk menentukan data baru dan data yang telah diproses. Kunci bookmark bergabung untuk membentuk satu kunci gabungan tunggal.

  • AWS Gluesecara default menggunakan kunci primer sebagai kunci bookmark, asalkan secara berurutan meningkat atau menurun (tanpa celah).

  • Anda dapat menentukan kolom yang akan digunakan sebagai tombol bookmark dalam AWS Glue skrip Anda. Untuk informasi selengkapnya tentang menggunakan bookmark Job dalam AWS Glue skrip, lihat. Menggunakan bookmark pekerjaan

  • AWS Gluetidak mendukung penggunaan kolom dengan nama peka huruf besar/kecil sebagai kunci bookmark pekerjaan.

Anda dapat memundurkan bookmark tugas Anda untuk tugas ETL Spark AWS Glue Anda untuk setiap eksekusi tugas sebelumnya. Anda dapat men-support skenario pengumpulan data historis dengan lebih baik dengan memundurkan bookmark tugas Anda ke setiap eksekusi tugas sebelumnya, sehingga eksekusi tugas berikutnya hanya mengolah ulang data dari eksekusi tugas yang diberi bookmark.

Jika Anda berniat untuk memproses ulang semua data menggunakan tugas yang sama, setel ulang bookmark tugas. Untuk menyetel ulang status bookmark tugas, gunakan konsol AWS Glue, operasi API ResetJobBookmark tindakan (Python: reset_job_bookmark), atau AWS CLI. Sebagai contoh, masukkan perintah berikut menggunakan AWS CLI:

aws glue reset-job-bookmark --job-name my-job-name

Saat Anda memundurkan atau mengatur ulang bookmark, AWS Glue tidak membersihkan file target karena mungkin ada beberapa target dan target tidak dilacak dengan bookmark tugas. Hanya file sumber yang dilacak dengan bookmark tugas. Anda dapat membuat target output yang berbeda ketika memundurkan dan mengolah ulang file sumber untuk menghindari duplikat data dalam output Anda.

AWS Glue melacak bookmark tugas berdasarkan tugas. Jika Anda menghapus sebuah tugas, maka bookmark tugas akan dihapus.

Dalam beberapa kasus, Anda mungkin telah mengaktifkan bookmark tugas ETL AWS Glue tapi tugas ETL Anda mengolah ulang data yang sudah diproses dalam eksekusi sebelumnya. Untuk informasi selengkapnya tentang mengatasi penyebab umum kesalahan ini, lihat Memecahkan masalah Kesalahan percikan.

Rincian operasional fitur bookmark pekerjaan

Bagian ini menjelaskan lebih lanjut tentang detail operasional penggunaan bookmark tugas.

Bookmark tugas menyimpan status untuk sebuah tugas. Setiap instans dari status tersebut di beri kunci berdasarkan nama tugas dan nomor versi. Ketika sebuah skrip memanggil job.init, maka ia mengambil status dan selalu mendapatkan versi terbaru. Dalam sebuah status, ada beberapa elemen status, yang spesifik untuk setiap sumber, transformasi, dan instans sink dalam skrip tersebut. Unsur-unsur status diidentifikasi oleh konteks transformasi yang dilampirkan pada elemen yang sesuai (sumber, transformasi, atau sink) dalam skrip. Unsur-unsur status disimpan secara atom saat job.commit dipanggil dari skrip pengguna. Skrip mendapat nama tugas dan pilihan kontrol untuk bookmark tugas dari argumen.

Unsur-unsur status dalam bookmark tugas adalah sumber, transformasi, atau data spesifik-sink. Sebagai contoh, misalkan Anda ingin membaca data tambahan dari lokasi Amazon S3 yang terus ditulis oleh tugas atau proses hulu. Dalam hal ini, skrip harus menentukan apa yang telah diproses sejauh ini. Implementasi bookmark tugas untuk sumber Amazon S3 menyimpan informasi sehingga ketika tugas berjalan lagi, ia dapat mem-filter hanya objek baru saja menggunakan informasi tersimpan dan melakukan komputasi ulang atas status untuk eksekusi tugas berikutnya. Sebuah stempel waktu digunakan untuk mem-filter file baru.

Selain elemen status, bookmark tugas memiliki nomor eksekusi, sebuah nomor percobaan, dan nomor versi. Nomor eksekusi melacak eksekusi tugas, dan nomor percobaan mencatat percobaan yang dilakukan untuk eksekusi tugas. Nomor eksekusi tugas adalah nomor yang meningkat secara monoton yang bertambah untuk setiap eksekusi yang berhasil. Nomor percobaan melacak upaya untuk setiap eksekusi, dan hanya bertambah ketika ada eksekusi setelah ada percobaan yang gagal. Nomor versi meningkat secara monoton dan melacak pembaruan ke bookmark tugas.

Dalam database AWS Glue layanan, status bookmark untuk semua transformasi disimpan bersama sebagai pasangan nilai kunci:

{ "job_name" : ..., "run_id": ..., "run_number": .., "attempt_number": ... "states": { "transformation_ctx1" : { bookmark_state1 }, "transformation_ctx2" : { bookmark_state2 } } }
Praktik terbaik

Berikut ini adalah praktik terbaik untuk menggunakan bookmark pekerjaan.

  • Jangan mengubah properti sumber data dengan bookmark diaktifkan. Misalnya, ada sumber data0 yang menunjuk ke jalur input Amazon S3 A, dan pekerjaan telah membaca dari sumber yang telah berjalan selama beberapa putaran dengan bookmark diaktifkan. Jika Anda mengubah jalur input datasource0 ke Amazon S3 path B tanpa mengubahtransformation_ctx, AWS Glue pekerjaan akan menggunakan status bookmark lama yang disimpan. Itu akan mengakibatkan file hilang atau melewatkan di jalur input B seperti yang AWS Glue akan mengasumsikan bahwa file-file tersebut telah diproses dalam proses sebelumnya.

  • Gunakan tabel katalog dengan bookmark untuk manajemen partisi yang lebih baik. Bookmark berfungsi baik untuk sumber data dari Katalog Data atau dari opsi. Namun, sulit untuk menghapus/menambahkan partisi baru dengan pendekatan from options. Menggunakan tabel katalog dengan crawler dapat memberikan otomatisasi yang lebih baik untuk melacak partisi yang baru ditambahkan dan memberi Anda fleksibilitas untuk memilih partisi tertentu dengan predikat pushdown.

  • Gunakan lister file AWS Glue Amazon S3 untuk kumpulan data besar. Bookmark akan mencantumkan semua file di bawah setiap partisi input dan melakukan filering, jadi jika ada terlalu banyak file di bawah satu partisi bookmark dapat berjalan ke driver OOM. Gunakan lister file AWS Glue Amazon S3 untuk menghindari daftar semua file dalam memori sekaligus.