1. Spark có gì khác với Scala Collections?
- Trong Scala Collections, mọi thao tác (
map, filter, reduce,...) đều được thực thi ngay lập tức (eager execution).
- Trong Spark RDD, các transformation (
map, filter,...) không được thực thi ngay! Chúng chỉ tạo ra một kế hoạch thực thi (lazy execution). Chỉ khi có một action (count, collect, take...), Spark mới chạy thật sự.
✅ Lợi ích của việc "lười biếng" (lazy evaluation)?
- Giảm số lần tính toán không cần thiết → Chạy nhanh hơn.
- Tối ưu hóa tốt hơn → Spark có thể sắp xếp lại các phép toán để giảm công việc.
2. Tại sao Spark nhanh hơn Hadoop?
🚀 So sánh Hadoop & Spark khi xử lý dữ liệu lớn có nhiều vòng lặp (iteration):
- Hadoop: Mỗi bước tính toán phải đọc từ disk → chạy chậm do mất nhiều thời gian đọc/ghi.
- Spark: Chạy trên RAM (bộ nhớ) → Nhanh hơn nhiều vì không cần ghi vào disk liên tục.
🔎 Ví dụ đơn giản:
- Nếu cần lặp lại tính toán 30 lần trên cùng dữ liệu → Hadoop sẽ ghi và đọc lại dữ liệu 30 lần trên disk! Trong khi đó, Spark chỉ cần đọc vào RAM một lần, sau đó xử lý trực tiếp.
3. Ví dụ về lỗi phổ biến khi dùng Spark (Và cách sửa lỗi!)
📌 Bài toán Logistic Regression (Học máy - Machine Learning)
- Giả sử chúng ta đang huấn luyện một mô hình phân loại dữ liệu (ví dụ: dự đoán email là spam hay không spam).
- Chúng ta cần đọc dữ liệu, chạy thuật toán nhiều lần (iteration), và cập nhật trọng số để tìm ranh giới phân loại tốt nhất.
🚨 Lỗi phổ biến trong Spark: Không dùng cache/persist