Mengenal Apache Airflow
Seringkali data yang kita punya belum bisa langsung kita sajikan kepada pembaca. Data tersebut perlu dilakukan operasi grouping, join, filter dengan data lainnya. Proses ini sering disebut dengan data cleaning.
Proses data cleaning ini biasanya butuh dilakukan secara terus menerus menurut jadwal tertentu (cron). Oleh karena itu, perlu adanya suatu alat yang bisa meng-otomatiskan job-job yang kita buat. Beberapa tools yang bisa digunakan yaitu Talend Open Studio, Pentaho, dan Apache Airflow.
Talend Open Studio dan Pentaho bisa dikatakan tools yang berbasis drag and drop sedangkan Apache Airflow berbasis script (python based). Tools yang berbasis drag drop lebih friendly use namun cukup susah jika ingin melakukan custom transformation.
Apache Airflow merupakan alat yang digunakan untuk membuat, menjadwalkan dan memonitor suatu proses cleaning data. Apache Airflow yang diciptakan oleh Air BnB ini bersifat open source, web based, dan python based.
Kelebihan menggunakan tools data cleaning yang script based adalah bisa membuat custom transformation, sehingga kita bisa melakukan pengolahan data sesuai yang diinginkan tanpa dibatasi feature. Apache Airflow ini bisa melakukan cron job yang artinya kita bisa membuat suatu job berjalan setiap 30 menit atau setiap hari atau setiap tanggal 10 dan lainnya.
Melalui apache airflow, kita juga bisa memonitoring job yang kita buat,bagaimana waktu eksekusi tiap task nya, apakah dia running well dan lainnya. Hal ini sangat penting untuk menjaga data yang kita miliki tetap update dan berjalan sesuai planning.
Beberapa istilah yang perlu diketahui saat akan menggunakan apache airflow ini adalah
1. DAG (Directed Acyclic Graph)
Agar lebih mudah dipahami kita baca pengertian DAG berdasarkan bahasa aslinya yaitu
In Airflow, a DAG – or a Directed Acyclic Graph – is a collection of all the tasks you want to run, organized in a way that reflects their relationships and dependencies.
A DAG is defined in a Python script, which represents the DAGs structure (tasks and their dependencies) as code.
Secara singkat, DAG adalah seperti suatu job yang tersusun dari beberapa task. Jika diibaratkan DAG adalah membuat kue, maka task nya adalah (1) menyiapkan bahan (2) mencampurkan semua bahan (3) dimasak di oven (4) dilakukan garnish.
2. Task
Di dalam suatu DAG terdapat beberapa tahapan-tahapan proses yang disebut task. Setiap task ini bisa dijalankan menggunakan bash operator atau python operator. Artinya jika cleaning data yang dilakukan menggunakan python code, maka opearator yang digunakan adalah python operator.
A Task defines a unit of work within a DAG; it is represented as a node in the DAG graph, and it is written in Python.
3. Task Instance
Task instance ini lebih mengacu kepada task yang akan kita bisa retry jika dia mengalami error.
A task instance represents a specific run of a task and is characterized as the combination of a DAG, a task, and a point in time (
execution_date
). Task instances also have an indicative state, which could be “running”, “success”, “failed”, “skipped”, “up for retry”, etc.
4. Operators
Ketika kita menggunakan python code untuk mengeksekusi suatu task, maka agar Airflow bisa mengeksekusinya, maka operator yang kita pilih adalah PythonOperator.
While DAGs describe how to run a workflow,
Operators
determine what actually gets done by a task.
Beberapa operator yang bisa digunakan adalah
- BashOperator — executes a bash command
- PythonOperator — calls an arbitrary Python function
- EmailOperator — sends an email
- SimpleHttpOperator — sends an HTTP request MySqlOperator, SqliteOperator, PostgresOperator, MsSqlOperator, OracleOperator, JdbcOperator, etc. — executes a SQL command
- Sensor — an Operator that waits (polls) for a certain time, file, database row, S3 key, etc…
5. XComs
Data yang ada tiap task bisa kita gunakan di task lainnya menggunakan fasilitas XComs. Terdapat dua macam Xcoms yaitu push (mengirim) dan pull (menerima).
- xcom_push (sent)
Misalkan kita punya 3 data (tblclients, tblproducts, tblrevenue), jika kita meng-Xcoms hanya tblclients maka tblproducts dan tblrevenue tidak akan bisa dipanggil di task lainnya. (hampir mirip seperti parameter global) - xcom_pull (receive)
Data yang sudah di xcoms_push bisa kita panggil menggunakan xcom_pull.
6. Schedule_interval
Seperti yang sudah dijelaskan sebelumnya, apache airflow bisa melakukan scheduling (cron). Agar lebih mudah, cara membuat schedule bisa menggunakan bantuan di website https://crontab.guru/.
7. Default Arguments
Default argument ini seperti argument-argument yang tidak perlu kita tuliskan disetiap task, namun cukup ditulis satu kali saja.