Làm việc với Spark DataFrames – Truy vấn nâng cao (Subqueries, Cube, Rollup)

spark_dataframe_cube

Tiếp theo bài Truy vấn cơ bản với Spark Dataframe, bài viết này tập trung sử dụng Spark-SQL để thực hiện các truy vấn SQL nâng cao hơn như truy vấn lồng và tổng hợp dữ liệu với Cube, Rollup. Lý do sử dụng SQL thay vì các hàm dựng sẵn của Dataframe là do tính dễ dùng. Ta đã quá quen thuộc với cú pháp và cách truy vấn sử dụng ngôn ngữ này.

Thông qua notebook, ta sẽ biết cách đặt truy vấn lồng tại các mệnh đề SELECT, FROM, WHERE như thế nào thông qua các ví dụ minh hoạ đơn giản. Sau đó, ta tiếp tục bước tổng hợp dữ liệu cho OLAP ra sao. Dữ liệu được phát sinh từ trang https://www.mockaroo.com/.

Snippet thường dùng

  • để xem tổng thời gian thực thi lệnh.
    %% time:
  • Truyền tham số trường hợp muốn tạo module và import vào notebook khác.
    sqlContext
  • Xử lý giá trị bị thiếu tại thuộc tính cụ thể.
    fillna({"attr": "val"})
  • Bỏ chọn thuộc tính liên tiếp.
    drop("attr_a", "attr_b)
  • Testing trong quá trình viết hàm.
    assert(val1 == val2)

Download:

Làm việc với Spark DataFrames – Truy vấn cơ bản

Spark DataFrames
Spark DataFrames

DataFrame là một kiểu dữ liệu collection phân tán, được tổ chức thành các cột được đặt tên. Về mặt khái niệm, nó tương đương với các bảng quan hệ (relational tables) đi kèm với các kỹ thuật tối ưu tính toán.

DataFrame có thể được xây dựng từ nhiều nguồn dữ liệu khác nhau như Hive table, các file dữ liệu có cấu trúc hay bán cấu trúc (csv, json), các hệ cơ sở dữ liệu phổ biến (MySQL, MongoDB, Cassandra), hoặc RDDs hiện hành. API này được thiết kế cho các ứng dụng Big Data và Data Science hiện đại. Kiểu dữ liệu này được lấy cảm hứng từ DataFrame trong Lập trình R và Pandas trong Python hứa hẹn mang lại hiệu suất tính toán cao hơn.

Spark DataFrames Performance
Spark DataFrames Performance

Trong bài viết này, tôi sẽ tiến hành thực nghiệm một vài truy vấn cơ bản để làm quen với kiểu dữ liệu DataFrames. Ở các bài viết sau, ta sẽ đi sâu hơn vào các truy vấn nâng cao và phức tạp hơn.

Continue reading “Làm việc với Spark DataFrames – Truy vấn cơ bản”