0
0
Lập trình
NM

Xây Dựng Pipeline Phân Tích Dữ Liệu Chất Lượng Trên AWS

Đăng vào 5 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

🎬 Xây Dựng Pipeline Phân Tích Dữ Liệu Chất Lượng Trên AWS (Dữ Liệu Phim IMDB)

👋 Chào các bạn! Đây là bài viết đầu tiên của tôi trên Dev.to 🎉. Tôi rất vui khi được chia sẻ hành trình xây dựng một pipeline ETL với các kiểm tra chất lượng dữ liệu và bảng điều khiển sử dụng dịch vụ AWS.

📌 Tại Sao Tôi Xây Dựng Điều Này

Pipeline dữ liệu không chỉ đơn thuần là di chuyển dữ liệu từ điểm A đến B. Chúng cần xử lý:

  • ✅ Làm sạch dữ liệu lộn xộn
  • ✅ Xác thực chất lượng dữ liệu
  • ✅ Tự động hóa quy trình làm việc
  • ✅ Cung cấp thông tin thông qua bảng điều khiển

Vì vậy, tôi đã tự thách thức bản thân để thiết kế một giải pháp trên đám mây sử dụng AWS để bao quát tất cả các bước này.

🏗️ Tổng Quan Kiến Trúc

Dưới đây là thiết kế tổng thể của pipeline:

  • Amazon S3 – Lưu trữ tập dữ liệu IMDB thô.
  • AWS Glue Crawler – Tự động phát hiện cấu trúc và lưu trữ siêu dữ liệu trong Glue Data Catalog.
  • AWS Glue Job – Làm sạch và chuyển đổi dữ liệu:
    • Chuyển đổi Released_Year thành số nguyên/ngày
    • Trích xuất thời gian chạy bằng phút
    • Làm sạch trường doanh thu Gross thành số
  • Amazon Athena – Chạy các kiểm tra chất lượng dữ liệu dựa trên SQL.
  • AWS Lambda – Tự động hóa các kiểm tra DQ, thực hiện các truy vấn Athena và xử lý logic.
  • Amazon SNS – Gửi thông báo qua email nếu phát hiện dữ liệu xấu.
  • Amazon EventBridge – Lên lịch và điều phối các lần chạy pipeline.
  • Amazon QuickSight – Tạo bảng điều khiển tương tác để cung cấp thông tin.

🛠️ Các Công Cụ & Dịch Vụ Được Sử Dụng

  • AWS Glue (ETL + Crawler)
  • AWS Lambda (Tự động hóa không máy chủ)
  • Amazon Athena (SQL trên S3)
  • Amazon S3 (Lưu trữ dữ liệu)
  • Amazon SNS (Thông báo)
  • Amazon EventBridge (Lịch trình)
  • Amazon QuickSight (Bảng điều khiển BI)
  • Python (kịch bản ETL + Lambda)

⚙️ Cách Thức Pipeline Hoạt Động

  1. Nhập Dữ Liệu
    Tập tin CSV thô của các bộ phim IMDB được tải lên S3.

  2. Khám Phá Cấu Trúc
    Glue Crawler quét tập tin → thêm bảng vào Glue Data Catalog.

  3. ETL với Glue
    Kịch bản Glue của tôi (glue_job_script.py) chuyển đổi dữ liệu:

    python Copy
    # Ví dụ chuyển đổi cho cột Gross  
    df = df.withColumn("Gross_Cleaned",  
    regexp_replace("Gross", "\[$,\]", "").cast("long"))
  4. Kiểm Tra Chất Lượng Dữ Liệu
    Lambda chạy các truy vấn trong Athena, ví dụ:

    sql Copy
    SELECT Series_Title, Released_Year, IMDB_Rating  
    FROM imdb_movies_rating  
    WHERE IMDB_Rating IS NULL OR Released_Year = '';  

    👉 Nếu phát hiện dữ liệu xấu → SNS gửi email cảnh báo cho tôi.

  5. Trực Quan Hóa
    Tập dữ liệu đã được làm sạch cuối cùng được kết nối với các bảng điều khiển QuickSight.

📊 Bảng Điều Khiển

Dưới đây là một cái nhìn thoáng qua về các bảng điều khiển tôi xây dựng với QuickSight:

  • ⭐ Phim Được Đánh Giá Cao Nhất
  • 🎭 Phân Phối Thể Loại
  • 📈 Xu Hướng Đánh Giá Qua Các Năm
  • 🎬 Thời Gian Chạy So Với Điểm IMDB

📬 Thông Báo

Không có pipeline nào hoàn chỉnh mà không có giám sát!
Khi phát hiện vấn đề chất lượng dữ liệu, tôi nhận được email từ SNS như:
"⚠️ Cảnh Báo Chất Lượng Dữ Liệu: 12 bản ghi bị thiếu điểm IMDB."

📂 Kho Dự Án

Tôi đã mở mã nguồn dự án của mình trên GitHub 👉 ETL-Movie-Data-Analysis
Kho này bao gồm:

  • Kịch bản ETL của Glue
  • Hàm Lambda cho các kiểm tra DQ
  • Cấu hình hạ tầng (EventBridge, SNS, Glue Crawler)
  • Ghi chú bảng điều khiển QuickSight

🌟 Bài Học Rút Ra

  • AWS Glue rất mạnh mẽ, nhưng các vấn đề không khớp cấu trúc có thể gây khó chịu 😅
  • QuickSight trở nên dễ dàng hơn nhiều khi các kiểu dữ liệu được làm sạch đúng cách.
  • Tự động hóa các kiểm tra DQ với Lambda + Athena là một bước tiến lớn cho độ tin cậy.
  • Tài liệu và kiểm soát phiên bản (GitHub) cũng quan trọng như việc xây dựng pipeline.

🚀 Bước Tiếp Theo

  • Thêm CI/CD với GitHub Actions
  • Sử dụng AWS Deequ hoặc Great Expectations cho các kiểm tra chất lượng dữ liệu phong phú hơn
  • Khám phá xuất các bảng điều khiển QuickSight dưới dạng mẫu

👨‍💻 Về Tôi

Tôi là Shuvendu Parida – đam mê về Kỹ Thuật Dữ Liệu, Đám Mây và Phân Tích. Đây là bài viết đầu tiên của tôi trên Dev.to 🙌 và tôi rất muốn nhận được phản hồi từ bạn!

👉 GitHub

💡 Cảm ơn bạn đã đọc! Nếu bạn thấy điều này hữu ích, hãy để lại một ❤️ hoặc bình luận để tôi có thể cải thiện trong các bài viết tiếp theo.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào