🎬 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_Yearthà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
Grossthành số
- Chuyển đổi
- 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
-
Nhập Dữ Liệu
Tập tin CSV thô của các bộ phim IMDB được tải lên S3. -
Khám Phá Cấu Trúc
Glue Crawler quét tập tin → thêm bảng vào Glue Data Catalog. -
ETL với Glue
Kịch bản Glue của tôi (glue_job_script.py) chuyển đổi dữ liệu:python# Ví dụ chuyển đổi cho cột Gross df = df.withColumn("Gross_Cleaned", regexp_replace("Gross", "\[$,\]", "").cast("long")) -
Kiểm Tra Chất Lượng Dữ Liệu
Lambda chạy các truy vấn trong Athena, ví dụ:sqlSELECT 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.
-
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.