Penjadwalan Airflow

Pengantar Apache Airflow dengan Python

Mike Metzger

Data Engineer

DAG Run

  • Satu instance spesifik workflow pada satu waktu
  • Dapat dijalankan manual atau via schedule_interval
  • Menyimpan status untuk tiap workflow dan tugas di dalamnya
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Pengantar Apache Airflow dengan Python

Tampilan DAG Run

DAG Run

Pengantar Apache Airflow dengan Python

Status DAG Run

Status DAG Run

Pengantar Apache Airflow dengan Python

Detail jadwal

Saat menjadwalkan DAG, atribut penting:

  • start_date - Tanggal/waktu awal menjadwalkan DAG run
  • end_date - Opsional, kapan berhenti membuat instance DAG baru
  • max_tries - Opsional, jumlah percobaan
  • schedule_interval - Frekuensi jalan
Pengantar Apache Airflow dengan Python

Interval jadwal

schedule_interval menyatakan:

  • Seberapa sering DAG dijadwalkan
  • Antara start_date dan end_date
  • Dapat didefinisikan dengan sintaks cron atau preset bawaan
Pengantar Apache Airflow dengan Python

Sintaks cron

Sintaks Cron

  • Mengacu pada format cron Unix
  • Terdiri dari 5 kolom dipisah spasi
  • Asterisk * berarti berjalan tiap interval (mis. tiap menit, tiap hari)
  • Nilai dalam kolom dapat dipisah koma untuk daftar nilai
Pengantar Apache Airflow dengan Python

Contoh cron

0 12 * * *              # Jalan harian pukul 12 siang
* * 25 2 *              # Setiap menit pada 25 Februari
0,15,30,45 * * * *      # Tiap 15 menit
Pengantar Apache Airflow dengan Python

Preset penjadwal Airflow

Preset:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

Padanan cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Pengantar Apache Airflow dengan Python

Preset khusus

Airflow memiliki dua preset schedule_interval khusus:

  • None - Tidak pernah menjadwalkan, untuk DAG yang dipicu manual
  • @once - Menjadwalkan hanya sekali
Pengantar Apache Airflow dengan Python

Masalah schedule_interval

Saat menjadwalkan DAG, Airflow akan:

  • Menggunakan start_date sebagai nilai paling awal
  • Menjadwalkan tugas pada start_date + schedule_interval
'start_date': datetime(2020, 2, 25),
'schedule_interval': @daily

Artinya waktu mulai paling awal untuk menjalankan DAG adalah 26 Februari 2020

Pengantar Apache Airflow dengan Python

Ayo berlatih!

Pengantar Apache Airflow dengan Python

Preparing Video For Download...