RobustX / Chương trình học / Vị trí công việc / Data Engineer / Xử lý Dữ liệu Lớn với Spark (Batch & Streaming)

Xử lý Dữ liệu Lớn với Spark (Batch & Streaming)

Đến một thời điểm, mọi Kỹ sư Dữ liệu đều phải đối mặt với một sự thật: dữ liệu đã trở nên quá lớn để có thể xử lý trên một máy tính duy nhất. Khi đó, Apache Spark không chỉ là một lựa chọn, mà là công cụ tiêu chuẩn của ngành để phá vỡ giới hạn này. Khóa học này được thiết kế để đưa bạn từ thế giới xử lý dữ liệu đơn lẻ sang mô hình điện toán phân tán, trang bị cho bạn năng lực xử lý các tập dữ liệu hàng terabyte một cách hiệu quả và nhanh chóng.

Chương trình sẽ cung cấp cho bạn một sự hiểu biết sâu sắc về kiến trúc cốt lõi của Spark và hệ sinh thái Hadoop, nền tảng của mọi hệ thống Big Data. Trọng tâm của khóa học là làm chủ DataFrame APISpark SQL – giao diện mạnh mẽ và quen thuộc giúp bạn thực hiện các phép biến đổi, tổng hợp và kết nối dữ liệu phức tạp trên quy mô lớn. Bên cạnh đó, bạn sẽ được bước chân vào thế giới xử lý dữ liệu thời gian thực hấp dẫn với Structured Streaming, học cách xây dựng các ứng dụng có khả năng phản ứng với dữ liệu ngay khi nó được tạo ra.

Thời lượng: 39h

KẾT QUẢ ĐẠT ĐƯỢC

Yêu cầu tiên quyết:

    • Hoàn thành kiến thức của các khóa học trước trong lộ trình.
    • Kỹ năng lập trình Python vững vàng, đặc biệt là các cấu trúc dữ liệu.
    • Kỹ năng SQL tốt để có thể tư duy và viết các logic biến đổi dữ liệu.

Nội dung khóa học

 1. Tổng quan về Hệ sinh thái Big Data và Kiến trúc Spark
  • Lịch sử và nhu cầu của Big Data:
    • Vì sao các doanh nghiệp không còn đủ sức xử lý dữ liệu lớn trên Excel, SQL Server thông thường?
    • Khái niệm dữ liệu lớn (Big Data): đặc điểm, thách thức, sự phát triển của Hadoop, Spark.
  • Giới thiệu Hadoop Distributed File System (HDFS) & MapReduce:
    • Nguyên lý lưu trữ, chia nhỏ file lớn thành block, phân phối và đảm bảo an toàn dữ liệu trên nhiều node.
    • Mô hình lập trình MapReduce: từ phân tán tính toán tới tổng hợp kết quả.
    • Hạn chế của MapReduce truyền thống
  • Kiến trúc tổng thể của Apache Spark:
    • Thành phần cốt lõi: Driver, Executor, Cluster Manager (Standalone, YARN, Mesos).
    • Cách Spark quản lý job, phân chia task tới node xử lý.
  • Nguyên lý Lazy Evaluation:
    • Lý do Spark không thực hiện từng câu lệnh ngay, tối ưu pipeline bằng việc xây dựng DAG (Directed Acyclic Graph).
  • Giới thiệu RDDs (Resilient Distributed Datasets):
    • Khái niệm tập dữ liệu phân tán, khả năng phục hồi (fault-tolerant).
    • Phân biệt Transformation (biến đổi) và Action (hành động) – các thao tác cơ bản đầu tiên trên Spark.
 2. Xử lý Dữ liệu theo lô với Spark SQL & DataFrames
  • Làm quen với DataFrame API và Spark SQL:
    • Khởi tạo SparkSession, tạo DataFrame từ nhiều nguồn dữ liệu (Parquet, CSV, JSON, kết nối database qua JDBC).
    • Xem nhanh dữ liệu, schema, kiểu dữ liệu.
  • Các phép biến đổi dữ liệu với DataFrame:
    • Chọn trường (select), lọc dữ liệu (filter), tạo cột mới với withColumn, đổi tên, thay đổi kiểu dữ liệu.
    • Tổng hợp dữ liệu: groupBy, agg (SUM, COUNT, AVG, MIN, MAX), phân nhóm dữ liệu quy mô lớn.
    • Kết hợp nhiều bảng dữ liệu lớn với join (inner, left, right, cross join), xử lý null.
  • Sử dụng User-Defined Functions (UDFs):
    • Khi các phép tính có logic đặc biệt, hướng dẫn viết UDF bằng Python áp dụng cho từng dòng dữ liệu.
  • Tối ưu hóa câu lệnh với Catalyst Optimizer:
    • Spark SQL tự động tối ưu hóa pipeline xử lý như thế nào, tránh lặp lại phép tính, pushdown predicate, kiểm soát hiệu năng.
 3. Giới thiệu về Xử lý Dữ liệu Thời gian thực (Structured Streaming)
  • Kiến thức nền về Streaming:
    • Dữ liệu bất tận (Unbounded Data), sự khác biệt giữa batch và streaming.
    • Phân biệt Event Time và Processing Time – tại sao sự trễ (latency) và thứ tự sự kiện lại quan trọng.
  • Kiến trúc Spark Structured Streaming:
    • Vai trò các thành phần: nguồn vào (Source), đích ra (Sink), Trigger, Output Mode.
    • Hướng dẫn cấu hình đọc dữ liệu theo stream từ thư mục/folder, Kafka hoặc socket.
  • Thực hành xây dựng pipeline streaming đầu tiên:
    • Đọc stream dữ liệu từ folder (file xuất liên tục), xuất kết quả ra console hoặc file.
    • Biến đổi dữ liệu trong dòng: select, filter, groupBy trên dòng sự kiện.
  • Xử lý trạng thái (Stateful Transformations):
    • Sử dụng windowing để tổng hợp dữ liệu trên từng cửa sổ thời gian (ví dụ: doanh thu mỗi 10 phút).
    • Thực hành xử lý sự kiện đến không đều, late data (dữ liệu đến muộn).
 4. Tối ưu hóa và Thực hành Nâng cao
  • Kỹ thuật tối ưu hiệu năng:
    • Partitioning dữ liệu: phân chia hợp lý để tận dụng tài nguyên cluster, tránh skew.
    • Coalesce và Repartition: khi nào cần giảm/tăng số partition, ảnh hưởng đến tốc độ và chi phí.
  • Caching & Persistence:
    • Khi nào nên lưu kết quả tạm thời (cache), các chiến lược quản lý bộ nhớ hiệu quả trong Spark.
  • Sử dụng Spark UI để theo dõi & debug:
    • Phân tích plan thực thi, xác định bottleneck trong pipeline.
    • Theo dõi tài nguyên sử dụng, giải thích log Spark.
  • Best practices khi viết ứng dụng PySpark:
    • Tổ chức code, chia nhỏ pipeline, kiểm thử, tài liệu hóa và quản lý phiên bản mã nguồn.
    • Qui tắc để vận hành Spark trên Cloud (AWS EMR, Databricks, …).
 5. BÀI THỰC HÀNH CUỐI KHÓA: Xây dựng pipeline phân tích dữ liệu giao dịch thương mại điện tử
  • Yêu cầu:
    • Đọc dữ liệu: Viết một Spark job để đọc dữ liệu giao dịch (định dạng Parquet) từ một Data Lake. Dữ liệu bao gồm thông tin về đơn hàng, khách hàng và sản phẩm.
    • Làm sạch và Biến đổi: Sử dụng DataFrame API để làm giàu dữ liệu, ví dụ: kết nối (join) bảng đơn hàng với bảng khách hàng và sản phẩm.
    • Phân tích và Tổng hợp: Thực hiện các phép phân tích:
      • Tính tổng doanh thu theo từng danh mục sản phẩm.
      • Tìm ra top 10 khách hàng chi tiêu nhiều nhất.
      • Phân tích xu hướng mua sắm theo tháng.
    • Lưu trữ kết quả: Ghi các bảng kết quả tổng hợp ra định dạng Parquet để các hệ thống báo cáo (BI) có thể sử dụng.

Bài viết liên quan