Siklus penjadwalan menentukan seberapa sering sebuah node berjalan secara otomatis di lingkungan produksi. Berdasarkan siklus tersebut, sistem penjadwalan DataWorks menghasilkan instans berulang dan menjalankannya sesuai dengan dependensi node serta waktu terjadwal masing-masing instans.
Konsep utama
-
Instans berulang: Untuk setiap timestamp data, sistem penjadwalan menghasilkan entitas runtime untuk tugas yang dipicu otomatis berdasarkan konfigurasi penjadwalannya—misalnya, berjalan pada pukul 00:00 setiap hari. Entitas ini disebut instans berulang. Waktu proses, status, dan log node dikaitkan dengan instans ini.
-
Dependensi lintas siklus: Di DataWorks, node dengan siklus penjadwalan berbeda dapat saling bergantung. Misalnya, node downstream harian dapat bergantung pada node upstream per jam. Dependensi antar-node merupakan dependensi antar instans berulangnya. Untuk informasi lebih lanjut, lihat Cross-cycle dependencies.
-
Dry-run: Untuk node yang tidak berjalan setiap hari, seperti node mingguan, bulanan, atau tahunan, sistem penjadwalan menghasilkan instans dry-run pada hari-hari non-terjadwal. Saat instans ini mencapai waktu terjadwalnya, statusnya langsung berubah menjadi "Success", tetapi tidak menjalankan logika kode di dalam node tersebut. Tujuan utama dry-run adalah menyelesaikan dependensi dan memastikan bahwa node downstream harian dapat dipicu dengan benar.
-
Status instans adalah "Success", waktu eksekusi 0 detik, dan tidak menghasilkan log.
-
Tidak menggunakan sumber daya penjadwalan atau komputasi.
-
Tidak menghalangi eksekusi node downstream. Bahkan jika node upstream berupa instans dry-run, node downstream tetap berjalan sesuai jadwal setelah kondisi eksekusinya terpenuhi.
-
Prinsip dasar dan skenario
Kondisi untuk eksekusi terjadwal
Instans berulang hanya berjalan setelah kedua kondisi berikut terpenuhi. Kedua kondisi ini dapat terpenuhi dalam urutan apa pun.
-
Semua instans upstream-nya telah berhasil berjalan. Ini mencakup instans yang selesai sebagai dry-run.
-
Instans tersebut telah mencapai waktu terjadwalnya.
Oleh karena itu, waktu terjadwal yang dikonfigurasi hanyalah waktu terjadwal yang diharapkan. Waktu eksekusi aktual suatu node dipengaruhi oleh faktor-faktor seperti waktu penyelesaian node upstream, ketersediaan sumber daya komputasi, dan kondisi eksekusi spesifik node tersebut.
Periode sekitar 00:00 setiap hari merupakan puncak waktu penjadwalan DataWorks, ketika sejumlah besar task dipicu secara bersamaan. Jika task Anda dijadwalkan pada 00:00, biasanya terjadi penundaan selama beberapa menit antara waktu terjadwal dan waktu mulai eksekusi aktual. Hal ini merupakan perilaku yang diharapkan.
Jika task Anda sensitif terhadap waktu mulainya, kami menyarankan agar Anda mengatur waktu terjadwal pada waktu setelah 00:00 untuk menghindari periode puncak (misalnya, 00:10 atau 01:00). Jika bisnis Anda mengharuskan task dimulai pada 00:00 (misalnya, task lapisan pertama dalam pipeline pemrosesan gudang data T+1), pertimbangkan penundaan ini dalam penilaian ketepatan waktu downstream Anda.
Skenario penjadwalan alur kerja
Dalam alur kerja yang terdiri dari node A, B, dan C (A→B→C), konfigurasi waktu terjadwal memengaruhi eksekusi seluruh alur kerja:
|
Skenario 1: Waktu mulai seragam |
|
|
|
Seluruh alur kerja harus dimulai setelah pukul 03:00. Untuk mencapai hal ini, atur waktu terjadwal node awal A menjadi |
|
Skenario 2: Waktu mulai berbeda untuk setiap node |
|
|
|
Node A dijadwalkan berjalan pada pukul 03:00, node B tidak boleh berjalan sebelum pukul 05:00, dan node C tidak boleh berjalan sebelum pukul 06:00. Anda perlu mengatur waktu terjadwal node A, B, dan C masing-masing menjadi |
|
Skenario 3: Waktu mulai spesifik untuk beberapa node |
|
|
|
Node A dijadwalkan berjalan pada pukul 03:00, node B tidak boleh berjalan sebelum pukul 05:00, dan node C tidak memiliki persyaratan waktu khusus. Atur waktu terjadwal node A menjadi |
Dampak pembaruan waktu terjadwal
Setelah Anda mengubah waktu terjadwal suatu node di Scheduling Settings dan menerapkan ulang node tersebut, dampaknya bergantung pada mode pembuatan instans yang dipilih:
-
Mode A: Hari berikutnya (T+1, default): Setelah memilih opsi ini dan menerapkan node, waktu terjadwal instans yang telah dihasilkan untuk dua hari terakhir (T dan T-1), termasuk instans yang telah selesai maupun yang tertunda, diperbarui ke waktu baru yang dikonfigurasi. Instans mendatang yang belum dihasilkan akan dibuat dengan waktu baru tersebut.
-
Mode B: Segera setelah penerapan: Memilih opsi ini akan segera menghasilkan instans baru berdasarkan konfigurasi baru. Waktu terjadwal instans historis tetap tidak berubah.
Konfigurasi jenis penjadwalan
DataWorks mendukung enam siklus penjadwalan: menit, jam, hari, minggu, bulan, dan tahun. Pada halaman pengeditan node di DataStudio, klik Scheduling Settings di sisi kanan, lalu konfigurasikan pengaturan di bagian Scheduling time.
Cara Anda mengonfigurasi waktu terjadwal bergantung pada cara node diorganisasikan:
-
Node alur kerja: Jika node diorganisasikan dalam alur kerja, waktu terjadwal dikonfigurasi di tingkat alur kerja. Node individual dalam alur kerja tidak dapat memiliki konfigurasi waktu terjadwal sendiri. Untuk mengubah waktu terjadwal, buka konfigurasi penjadwalan alur kerja tersebut.
-
Node mandiri: Jika node tidak termasuk dalam alur kerja apa pun, waktu terjadwal dikonfigurasi secara independen pada node itu sendiri.
Penjadwalan tingkat menit
Interval minimum untuk penjadwalan tingkat menit adalah 1 menit.
Contoh konfigurasi
Tujuan: Node dijadwalkan setiap 30 menit antara 00:00 dan 23:59 setiap hari.
Ekspresi cron dihasilkan secara otomatis berdasarkan waktu yang dipilih dan tidak dapat dimodifikasi secara manual.
Atur tanggal efektif menjadi Permanent. Ekspresi cron yang dihasilkan secara otomatis adalah 00 */30 00-23 * * ?.
Detail penjadwalan
Konfigurasi di atas menghasilkan 48 instans berulang per hari, dengan waktu terjadwal 00:00, 00:30, 01:00, ..., 23:30. Data timestamp (bizdate) setiap instans adalah hari yang sama.
Untuk skenario dependensi penjadwalan tingkat menit lainnya, lihat Cross-cycle dependencies for minute-level scheduling.
Penjadwalan per jam
Catatan
-
Rentang waktu mengikuti prinsip inklusif-inklusif. Misalnya, jika Anda mengonfigurasi node untuk berjalan setiap 1 jam antara
00:00dan03:00, sistem penjadwalan menghasilkan 4 instans dengan waktu terjadwal00:00,01:00,02:00, dan03:00. -
Anda dapat mengatur rentang waktu dan interval, atau langsung menentukan beberapa waktu eksekusi spesifik.
Contoh konfigurasi
Tujuan: Node dijadwalkan setiap 6 jam antara 00:00 dan 23:59 setiap hari.
Ekspresi cron dihasilkan secara otomatis berdasarkan waktu yang dipilih dan tidak dapat dimodifikasi secara manual.
Atur Scheduling Cycle menjadi Hour, pilih tab Hour Range, atur Effective Date menjadi Permanent. Ekspresi cron yang dihasilkan secara otomatis adalah 00 00 00-23/6 * * ?.
Detail penjadwalan
Sistem penjadwalan menghasilkan 4 instans per hari, dengan waktu terjadwal 00:00, 06:00, 12:00, dan 18:00.
Untuk skenario dependensi penjadwalan per jam lebih lanjut, lihat Dependensi Lintas Siklus untuk Penjadwalan Per Jam.
Penjadwalan harian
Node yang dijadwalkan harian berjalan sekali per hari pada waktu terjadwal yang ditentukan. Saat membuat node, waktu terjadwal default dihasilkan secara acak dalam rentang 00:00–00:30 untuk mencegah sejumlah besar task dimulai secara bersamaan pada 00:00. Anda dapat mengubahnya sesuai kebutuhan.
Contoh konfigurasi
Tujuan: Node berjalan sekali per hari pada 13:00.
Ekspresi cron dihasilkan secara otomatis berdasarkan waktu yang dipilih dan tidak dapat dimodifikasi secara manual.
Atur Effective Date menjadi Permanent.
Detail penjadwalan
Sistem penjadwalan menghasilkan satu instans per hari untuk task ini, dengan waktu terjadwal pukul 13:00 pada hari yang sama.
Untuk skenario dependensi penjadwalan harian lainnya, lihat Cross-cycle dependencies for daily scheduling.
Penjadwalan mingguan
Pada hari-hari non-terjadwal, node yang dijadwalkan mingguan memicu dry-run untuk memastikan dependensi downstream dapat berjalan normal. Untuk informasi lebih lanjut, lihat Dry-run.
Contoh konfigurasi
Tujuan: Task berjalan pada waktu yang ditentukan setiap hari Senin dan Jumat. Instans yang dihasilkan pada hari Senin dan Jumat dijadwalkan dan berjalan secara normal, sedangkan instans pada hari lainnya merupakan instans dry-run.
Ekspresi cron dihasilkan secara otomatis berdasarkan waktu yang dipilih dan tidak dapat dimodifikasi secara manual.
Atur Scheduling time menjadi 00:00, atur Effective Date menjadi Permanent. Ekspresi cron yang dihasilkan secara otomatis adalah 00 00 00 ? * 1,5.
Detail penjadwalan
Sistem penjadwalan secara otomatis menghasilkan dan menjalankan instans untuk task tersebut.
Saat menggunakan fitur backfill data, perhatikan data timestamp yang dipilih. Di DataWorks, data timestamp = tanggal terjadwal - 1. Misalnya, untuk melakukan backfill task mingguan yang berjalan pada hari Senin, pilih hari Minggu minggu sebelumnya sebagai data timestamp. Jika Anda memilih tanggal lain, instans backfill akan menjadi instans dry-run.
Penjadwalan bulanan
Pada hari-hari non-terjadwal, node bulanan memicu dry-run untuk memastikan dependensi downstream dapat berjalan dengan baik. Untuk informasi lebih lanjut, lihat Dry-run.
Penjadwalan bulanan memungkinkan Anda mengatur Specified time menjadi Last day of every month.
Contoh konfigurasi
Tujuan: Node berjalan pada waktu yang ditentukan pada hari terakhir setiap bulan. Instans yang dihasilkan pada hari terakhir setiap bulan berjalan sesuai jadwal, sedangkan instans pada hari lainnya merupakan dry-run.
Ekspresi cron dihasilkan secara otomatis berdasarkan waktu yang dipilih dan tidak dapat dimodifikasi secara manual.
Atur Scheduling Cycle menjadi Month, dan atur waktu spesifik menjadi 00:00 pada hari terakhir setiap bulan.
Detail penjadwalan
Sistem penjadwalan secara otomatis menghasilkan dan menjalankan instans untuk node tersebut.
Saat menggunakan fitur backfill data, perhatikan data timestamp yang dipilih. Di DataWorks, data timestamp = tanggal terjadwal - 1. Misalnya, untuk melakukan backfill node akhir bulan yang berjalan pada 31 Januari, atur data timestamp menjadi 30 Januari. Jika Anda memilih tanggal berbeda, instans backfill akan menjadi dry-run.
Penjadwalan tahunan
Pada hari-hari non-terjadwal, node tahunan memicu dry-run untuk memastikan dependensi downstream dapat berjalan dengan baik. Untuk informasi lebih lanjut, lihat Dry-run.
Contoh konfigurasi
Tujuan: Node berjalan pada tanggal 1 dan hari terakhir bulan Januari, April, Juli, dan Oktober setiap tahun. Instans yang dihasilkan pada tanggal yang ditentukan berjalan sesuai jadwal, sedangkan instans pada tanggal lainnya merupakan dry-run.
Dalam formulir, atur Scheduling time menjadi 00:00, dan atur Effective Date menjadi Permanent. Ekspresi cron yang sesuai adalah 00 00 00 L,1 1,4,7,10 ?.
Detail penjadwalan
Sistem penjadwalan secara otomatis menghasilkan dan menjalankan instans untuk node tersebut.
Untuk skenario dependensi lainnya, lihat Cross-cycle dependencies.