Phân vùng và xử lý lười

Làm sạch dữ liệu với PySpark

Mike Metzger

Data Engineering Consultant

Phân vùng

  • DataFrame được chia thành các phân vùng
  • Kích thước phân vùng có thể khác nhau
  • Mỗi phân vùng xử lý độc lập
Làm sạch dữ liệu với PySpark

Xử lý lười

  • Biến đổi là lười
    • .withColumn(...)
    • .select(...)
  • Chỉ thực thi khi có hành động
    • .count()
    • .write(...)
  • Có thể sắp xếp lại biến đổi để tối ưu hiệu năng
  • Đôi khi gây hành vi bất ngờ
Làm sạch dữ liệu với PySpark

Thêm ID

Trường ID thông thường:

  • Phổ biến trong CSDL quan hệ
  • Thường là số nguyên tăng dần, tuần tự, duy nhất
  • Ít song song
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Làm sạch dữ liệu với PySpark

ID tăng đơn điệu

pyspark.sql.functions.monotonically_increasing_id()

  • Số nguyên 64-bit, tăng dần, duy nhất
  • Không nhất thiết tuần tự (có khoảng trống)
  • Hoàn toàn song song
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Làm sạch dữ liệu với PySpark

Ghi chú

Nhớ rằng Spark là lười!

  • Đôi khi lệch thứ tự
  • Khi join, ID có thể gán sau khi join
  • Hãy kiểm thử các biến đổi
Làm sạch dữ liệu với PySpark

Hãy luyện tập!

Làm sạch dữ liệu với PySpark

Preparing Video For Download...