🎯 Mục tiêu bài Quiz
Kiểm tra kiến thức của bạn qua các câu hỏi trắc nghiệm và bài tập thực hành!
✅ 18 câu hỏi trắc nghiệm (6 phần)
✅ 3 bài tập thực hành
✅ Yêu cầu: Hoàn thành bài 1-14
Thời gian: 30 phút | Độ khó: Tổng hợp | Đạt yêu cầu: ≥ 13/18 câu đúng
Phần 1: Advanced Pandas & ETL
Phần 2: Apache Spark
Phần 3: PySpark
Phần 4: Kafka & Streaming
Phần 5: Data Lake & Delta Lake
Phần 6: NLP & Tổng hợp
📝 Bài tập thực hành
Bài tập 1: Advanced Pandas Pipeline
Yêu cầu: Viết một Pandas pipeline sử dụng .pipe() để xử lý dữ liệu bán hàng:
- Loại bỏ rows có
revenue < 0 - Tạo cột
revenue_per_unit = revenue / quantity - Group by
categoryvà tính tổng revenue
1import pandas as pd23def remove_negative_revenue(df):4 return df[df['revenue'] >= 0]56def add_revenue_per_unit(df):7 df['revenue_per_unit'] = df['revenue'] / df['quantity']8 return df910def aggregate_by_category(df):11 return df.groupby('category')['revenue'].sum().reset_index()1213result = (14 df15 .pipe(remove_negative_revenue)16 .pipe(add_revenue_per_unit)17 .pipe(aggregate_by_category)18)Bài tập 2: PySpark Transformation
Yêu cầu: Viết PySpark code để đọc file CSV, lọc đơn hàng có amount > 1000, group by region và đếm số đơn hàng.
1from pyspark.sql import SparkSession2from pyspark.sql.functions import count34spark = SparkSession.builder.appName("OrderAnalysis").getOrCreate()56df = spark.read.csv("orders.csv", header=True, inferSchema=True)78result = (9 df10 .filter(df["amount"] > 1000)11 .groupBy("region")12 .agg(count("*").alias("order_count"))13 .orderBy("order_count", ascending=False)14)1516result.show()Bài tập 3: Kafka Consumer Design
Yêu cầu: Một hệ thống e-commerce có topic order-events với 6 partitions. Cần xử lý 3000 messages/giây. Thiết kế consumer group phù hợp.
- Cần bao nhiêu consumers tối ưu?
- Nếu 1 consumer crash, điều gì xảy ra?
- Nếu thêm consumer thứ 7, nó có nhận được partition nào không?
- Tối ưu: 6 consumers (bằng số partitions) — mỗi consumer xử lý 1 partition (~500 msgs/s mỗi consumer).
- Rebalance xảy ra: Kafka tự động phân bổ lại partition của consumer bị crash cho các consumers còn lại trong group. Ví dụ: 5 consumers còn lại, 1 consumer sẽ xử lý 2 partitions.
- Consumer thứ 7 sẽ idle — không nhận partition nào vì số consumers > số partitions. Trong 1 consumer group, mỗi partition chỉ gán cho đúng 1 consumer.
📊 Đánh giá kết quả
| Số câu đúng | Đánh giá |
|---|---|
| 16-18 | 🌟 Xuất sắc! Bạn nắm vững kiến thức |
| 13-15 | 👍 Tốt! Cần ôn lại một số chủ đề |
| 9-12 | 📚 Cần học thêm, xem lại các bài |
| < 9 | 🔄 Nên học lại từ đầu |
🎓 Hoàn thành khóa học!
Câu hỏi tự kiểm tra
- Khi nào nên dùng Pandas và khi nào nên chuyển sang PySpark?
- Giải thích sự khác biệt giữa Data Lake và Data Warehouse, khi nào dùng cái nào?
- Tại sao Delta Lake lại quan trọng trong kiến trúc Data Lakehouse?
- Thiết kế một Data Pipeline end-to-end cho hệ thống e-commerce real-time.
🎉 Tuyệt vời! Bạn đã hoàn thành toàn bộ khóa học Data Wrangling & Big Data!
Tiếp theo: Hãy áp dụng kiến thức vào các dự án thực tế và tiếp tục học Deep Learning hoặc MLOps!
Bạn đã hoàn thành khóa học Data Wrangling & Big Data!
Kiến thức này sẽ là nền tảng quan trọng cho:
- 🔄 Xây dựng ETL/ELT Pipelines chuyên nghiệp
- ⚡ Xử lý Big Data với Spark & PySpark
- 📡 Streaming data với Apache Kafka
- 🏗️ Thiết kế Data Lakehouse với Delta Lake
- 🤖 Chuẩn bị dữ liệu cho Machine Learning & NLP
Next steps:
- Thực hành với dữ liệu thực tế (Kaggle, công ty)
- Xây dựng portfolio projects với Spark & Kafka
- Học tiếp Deep Learning hoặc MLOps
