Databricks for Data & AI Engineers
Trang chủ / Module 7
🔗 Module 7 / 14 · 1-2 tuần

Orchestration — Databricks Workflows & Jobs

Jobs UI, task dependencies, các loại task, retries/alerting, giới thiệu Databricks Asset Bundles.

WorkflowsJobsDAB
📌 Vì sao module này quan trọng

Một pipeline chỉ có giá trị khi nó chạy đáng tin cậy, đúng lịch, không cần ai theo dõi thủ công. Databricks Workflows là công cụ điều phối tích hợp sẵn (không cần thêm Airflow bên ngoài cho phần lớn nhu cầu) — hiểu rõ nó giúp bạn tự vận hành toàn bộ pipeline trên một nền tảng duy nhất.

🎯 Mục tiêu học tập

  • Xây dựng job nhiều task có phụ thuộc (DAG) qua Databricks Workflows
  • Cấu hình retry, alerting, và lịch chạy (schedule/trigger) cho job
  • Hiểu các loại task hỗ trợ (notebook, Python script, Lakeflow pipeline, SQL, dbt)
  • Nắm khái niệm Databricks Asset Bundles để chuẩn bị cho CI/CD (Module 13)

Jobs & Task Dependencies

Một Job trên Databricks gồm nhiều task, mỗi task có thể phụ thuộc vào task khác (tạo thành DAG), chạy trên cùng hoặc khác cluster. Ví dụ luồng điển hình: task 1 (Auto Loader nạp Bronze) → task 2 (chạy Lakeflow pipeline Silver/Gold) → task 3 (chạy notebook huấn luyện lại model, chỉ chạy nếu task 2 thành công) → task 4 (gửi thông báo Slack nếu có bước nào lỗi).

Các loại Task hỗ trợ

Loại taskDùng cho
NotebookChạy 1 notebook cụ thể, truyền tham số qua widget
Python script / Python wheelChạy code đã đóng gói thành package — khuyến nghị cho code production thay vì notebook
Lakeflow PipelineKích hoạt chạy 1 pipeline Lakeflow đã định nghĩa (Module 6)
SQLChạy 1 câu query hoặc refresh 1 dashboard trên SQL Warehouse
dbtChạy dbt project trực tiếp trong Workflows nếu team đã dùng dbt cho transform layer
Job (chạy job khác)Gọi 1 job khác như một task — chia nhỏ pipeline lớn thành các job tái sử dụng được

Retry, Alerting, Trigger

Mỗi task có thể cấu hình số lần retry và thời gian chờ giữa các lần — quan trọng cho các lỗi tạm thời (network timeout gọi API ngoài). Alerting gửi thông báo (email, Slack webhook, PagerDuty) khi task/job thất bại hoặc chạy quá thời gian dự kiến (duration threshold). Job có thể kích hoạt theo schedule (cron), file arrival (khi có file mới xuất hiện ở một đường dẫn cụ thể — hữu ích khi nguồn dữ liệu không cố định giờ), hoặc gọi qua API từ hệ thống ngoài (ví dụ trigger từ chính ứng dụng Laravel khi có sự kiện nghiệp vụ cần xử lý ngay).

Databricks Asset Bundles (DAB) — giới thiệu nhanh

Thay vì tạo job thủ công qua UI (khó version control, khó review thay đổi), Databricks Asset Bundles cho phép định nghĩa toàn bộ job/pipeline/cluster dưới dạng file YAML, quản lý bằng Git như code bình thường — đây là công cụ Infrastructure-as-Code chính thức của Databricks, nền tảng cho CI/CD (đào sâu ở Module 13):

# databricks.yml (rút gọn)
resources:
  jobs:
    daily_orders_pipeline:
      name: "Daily Orders Pipeline"
      tasks:
        - task_key: ingest
          notebook_task:
            notebook_path: ./notebooks/ingest_orders.py
        - task_key: transform
          depends_on: [{task_key: ingest}]
          pipeline_task:
            pipeline_id: ${resources.pipelines.orders_pipeline.id}
      schedule:
        quartz_cron_expression: "0 0 2 * * ?"
        timezone_id: "Asia/Ho_Chi_Minh"

🏋️ Bài tập thực hành

Job nhiều task có phụ thuộc và alerting

Xây 1 Databricks Job gồm 3 task: (1) chạy notebook nạp dữ liệu, (2) chạy pipeline Lakeflow từ Module 6 (chỉ chạy khi task 1 thành công), (3) task gửi thông báo (email hoặc webhook giả lập) khi có lỗi ở bất kỳ bước nào. Đặt lịch chạy job mỗi ngày, thử nghiệm retry bằng cách cố tình gây lỗi tạm thời ở 1 task.

📚 Tài nguyên học tập

✅ Tự đánh giá hoàn thành

  • Xây được job nhiều task có phụ thuộc rõ ràng (DAG)
  • Cấu hình được retry và alerting khi task thất bại
  • Biết cách đặt lịch job theo cron hoặc file arrival
  • Hiểu vai trò của Databricks Asset Bundles trong việc quản lý job bằng code