0

Rust & Jupyter Notebook - Phân tích dữ liệu với Polars (Phần 06)

Parquet & Appache Arrow - Cặp đôi hoàn hảo?

Chúng ta thường hay nghĩ đến các tệp tin kiểu CSV để chứa dữ liệu phục vụ phân tích, tuy nhiên, với sự ra đời của tệp tin kiểu parquet vào năm 2013 và đặc biệt hơn nữa khi kết hợp nó với cơ chế Lazy trong polars thì có lẽ đây là một cặp đôi hoàn hảo. Tại sao lại nói vậy? Rất đơn giản, parquet tối ưu cho lưu trữ dữ liệu khi không dùng và Apache Arrow được sử dụng trong polars thì tối ưu cho tính toán trên bộ nhớ khi thi hành. Hơn nữa, các thuật toán nén dữ liệu được dùng trong các tệp parquet cũng cho kết quả rất ấn tượng và chúng ta có thể hoàn toàn linh hoạt lựa chọn theo mục đích xử lý cụ thể.

Parquet là một chuẩn mở về khuôn dạng lưu trữ dữ liệu kiểu cột. Không giống như các kiểu khuôn dạng khác (ví dụ CSV) thường lưu trữ dũ liệu theo kiểu bản ghi, các tệp tin kiểu parquet lưu dữ liệu từng cột, từng cột một. Chính kiểu lưu trữ dữ liệu này là chìa khóa khai mở hiệu năng cao trong các tác vụ phân tích dữ liệu khối lượng lớn với lý do khá đơn giản là phần lớn các truy vấn thường sẽ chỉ cần đến một số cột dữ liệu nhất định chứ ít khi là tất cả các cột dữ liệu trong một kho dữ liệu.

Để dễ hình dung, hãy tưởng tượng một tệp dữ liệu parquet như một tủ đựng tài liệu, dữ liệu được chia thành các "row group" như các ngăn kéo, rồi trong từng ngăn kéo, dữ liệu lại được chi thành các thư mục hay "column chunk". Tiếp đó trong các từng thư mục, dữ liệu lại được chia thành các "page". Phần "metadata" của tệp dữ liệu không nhữ chứa địa chỉ chính xác của từng khối dữ liệu mà còn chứa nhiều thông tin thống kê giúp việc truy xuất dữ liệu thông minh hơn, chẳng hạn nó chứa cả thông tin giá trị lớn nhất và nhỏ nhất của một "column chunk" giúp cho việc đọc dữ liệu từ tệp theo điều kiện được thực hiện rất nhanh.

Để hiểu rõ hơn về cấu trúc tệp dữ liệu parquet cũng như cách sử dụng với polars khi phân tích dữ liệu, hãy xem video "#0043 - Rust NoteBook - Phân tích dữ liệu với polars (Phần 06)” trên kênh Youtube RustDEV Vietnam.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí