1. Airflow TaskFlow là gì?
Airflow TaskFlow là API cho phép bạn xây dựng DAG (Directed Acyclic Graph) một cách trực quan hơn bằng decorator @task
và @dag
. Bạn viết hàm Python như những task, thiết lập tuần tự hoặc song song qua decorator – code ngắn gọn, rõ ràng.
2. Song song và tuần tự trong TaskFlow
- Song song: Nếu các task không phụ thuộc lẫn nhau, TaskFlow API mặc định sẽ chạy chúng đồng thời. Ví dụ, các task lấy dữ liệu từ API hoặc tải dữ liệu có thể thực thi cùng lúc github.com.
- Tuần tự: Khi task B phụ thuộc kết quả từ task A, TaskFlow sẽ tự động chạy tuần tự theo thứ tự đã thiết lập bằng đạo hàm luồng (dataflow).
3. Ví dụ minh họa
@dag(...) def pipeline(): @task() def task_a(): ... @task() def task_b(a): ... @task() def task_c(): ... # task_a và task_c chạy song song # task_b đợi task_a kết thúc c = task_c() a = task_a() b = task_b(a)
Trong ví dụ này: task_a
và task_c
chạy cùng lúc, sau đó task_b
mới bắt đầu sau khi task_a
hoàn thành.
4. Khi nào dùng song song, khi nào tuần tự?
- Song song: Các công việc độc lập, làm giảm tổng thời gian thực thi.
- Tuần tự: Khi có phụ thuộc dữ liệu hoặc thứ tự nghiêm ngặt – ví dụ: xử lý bảng parent trước khi bảng child có khóa ngoại liên kết.
5. Lợi ích khi dùng TaskFlow API topology
- Ít code hơn: không cần viết
.set_upstream()
hay>>
rối rắm. - UI rõ ràng hơn: DAG nhìn trực quan, dễ đọc cấu trúc tuần tự/song song trong giao diện Airflow
- Scalable: Thêm task hoặc thay đổi luồng làm việc không ảnh hưởng nhiều đến cấu trúc base.
6. Mẹo tối ưu
- Sử dụng chain() để định nghĩa luồng tuần tự hoặc song song với các danh sách task group.
- Tận dụng Dynamic Task Mapping khi cần tạo nhiều task tương tự chạy song song – tiết kiệm code và quản lý luồng linh hoạt.
Kết luận
Airflow TaskFlow giúp bạn xây dựng DAG rõ ràng và dễ mở rộng, đặc biệt với topology song song – tuần tự. Khi task độc lập, để TaskFlow chạy song song. Khi cần phụ thuộc thứ tự, sử dụng decorator để buộc tuần tự. Kết quả là luồng dữ liệu hiệu quả, code ngắn gọn & UI DAG dễ theo dõi.
Hy vọng bài viết giúp bạn hiểu rõ cách thiết kế DAG với TaskFlow để tận dụng tốt khả năng song song và tuần tự trong Airflow!