0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Chi Tiết Về Delta Lake Với PySpark

Đăng vào 1 tháng trước

• 3 phút đọc

Chủ đề:

Apache Spark

Lời Mở Đầu

Trong thời đại dữ liệu bùng nổ hiện nay, Data Warehouse đã chứng kiến sự phát triển vượt bậc trong khả năng lưu trữ và truy vấn dữ liệu có cấu trúc. Tuy nhiên, với sự gia tăng mạnh mẽ về khối lượng và đa dạng của dữ liệu, đặc biệt là dữ liệu bán cấu trúc và phi cấu trúc, Data Warehouse đã bộc lộ nhiều hạn chế. Để khắc phục điều này, Data Lake đã ra đời, cho phép lưu trữ nhiều loại dữ liệu khác nhau, nhưng nó lại thiếu khả năng xử lý và truy vấn dữ liệu có cấu trúc. Nhằm kết hợp những ưu điểm của cả Data Warehouse và Data Lake, Lakehouse được phát triển, mang lại khả năng lưu trữ linh hoạt và hiệu quả.

Giới Thiệu Về Delta Lake

Delta Lake là một phần mềm mã nguồn mở giúp tối ưu hóa định dạng bảng cho lưu trữ dữ liệu. Delta Lake mang lại nhiều tính năng nổi bật như ACID transactions, Time travel, hỗ trợ cả chế độ Batch và Streaming, cũng như khả năng thực hiện Schema Enforcement và Evolution.

Delta Lake sử dụng định dạng .parquet để lưu trữ dữ liệu, trong đó một Delta Table bao gồm hai thành phần chính:

  • Parquet files: Chứa dữ liệu ở định dạng .parquet.
  • Transaction log: Lưu trữ metadata về các giao dịch với dữ liệu.

Delta Lake hỗ trợ cả ETL và ELT, nhưng ETL thường được ưa chuộng hơn nhờ tính hiệu quả và độ tin cậy cao hơn.

Hiệu Suất và Độ Tin Cậy

  • Hiệu Suất: Delta Lake tối ưu hóa hiệu suất bằng cách:

    • Lưu trữ đường dẫn file và metadata trong Transaction log.
    • Thực hiện read một phần dữ liệu qua file-skipping.
    • Co-locate các dữ liệu tương đồng để thuận tiện cho việc tối ưu hóa.
  • Độ Tin Cậy: Delta Lake đảm bảo quy trình ETL an toàn qua việc áp dụng ACID transactions.

Liquid Clustering, Z-ordering và Hive-style Partitioning

Liquid Clustering là phương pháp mới nhất giúp cải thiện hiệu suất trong quá trình clustering dữ liệu, đặc biệt trong các tình huống:

  • Filter dữ liệu thường xuyên.
  • Dữ liệu bị skew.
  • Tốc độ tăng trưởng của dữ liệu quá nhanh, cần bảo trì và tinh chỉnh.

Engines Hỗ Trợ Truy Vấn

Delta Lake chủ yếu hỗ trợ Apache Spark, đặc biệt là trên nền tảng Databricks. Tuy nhiên, nó cũng hỗ trợ một số công cụ truy vấn khác như polars.

Phát Triển và Thực Thi Schema

Delta Lake hỗ trợ Schema evolution để tránh tình trạng dữ liệu bị hỏng do sự không tương thích giữa schema mới và cũ. Khi thực hiện ghi dữ liệu mới, nếu schema không khớp, một lỗi AnalysisException sẽ xảy ra.

Ví dụ Về Schema Evolution

Khi ghi dữ liệu mới với schema khác, bạn có thể sử dụng tùy chọn mergeSchema để cập nhật schema.

python Copy
# Cập nhật schema

df.write \
    .option("mergeSchema", "true") \
    .mode("append") \
    .format("delta") \
    .save("data/toy_data")

Tính Năng Time Travel

Tính năng Time travel cho phép bạn khôi phục lại dữ liệu ở phiên bản trước đó, cực kỳ hữu ích khi mắc lỗi trong quá trình ghi dữ liệu.

Tối Ưu Hóa Dữ Liệu

Để cải thiện hiệu suất đọc, cần giảm tình trạng "small file problem". Delta Lake cung cấp nhiều phương pháp tối ưu hóa như OPTIMIZE command để gộp các file nhỏ thành file lớn hơn.

python Copy
# Tối ưu hóa số lượng file
from delta.tables import *
deltaTable = DeltaTable.forPath(spark, "test/delta_table")
deltaTable.optimize().executeCompaction()

Quản Lý Change Data Capture (CDC)

Delta Lake cung cấp khả năng theo dõi sự thay đổi dữ liệu theo hàng động, cho phép bạn dễ dàng xử lý dữ liệu thay đổi giữa các phiên bản của Delta Table.

Kết Luận

Ngoài Delta Lake, còn nhiều định dạng Lakehouse khác như Hudi, Iceberg, XTable đang phát triển, mở ra nhiều cơ hội mới cho việc quản lý và phân tích dữ liệu lớn.

Tài Liệu Tham Khảo

  • Delta Lake Documentation
  • Apache Spark Documentation
  • Databricks Guides
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào