การแบ่ง Partition และ Lazy Processing

การทำความสะอาดข้อมูลด้วย PySpark

Mike Metzger

Data Engineering Consultant

การแบ่ง Partition

  • DataFrame จะถูกแบ่งออกเป็น Partition
  • ขนาดของแต่ละ Partition อาจแตกต่างกัน
  • แต่ละ Partition ถูกประมวลผลแยกกันอย่างอิสระ
การทำความสะอาดข้อมูลด้วย PySpark

Lazy Processing

  • Transformation เป็นแบบ Lazy
    • .withColumn(...)
    • .select(...)
  • ไม่มีการประมวลผลจริงจนกว่าจะเรียก Action
    • .count()
    • .write(...)
  • Transformation สามารถเรียงลำดับใหม่เพื่อประสิทธิภาพสูงสุด
  • บางครั้งอาจเกิดพฤติกรรมที่ไม่คาดคิด
การทำความสะอาดข้อมูลด้วย PySpark

การเพิ่ม ID

ฟิลด์ ID แบบปกติ:

  • พบได้ทั่วไปในฐานข้อมูลเชิงสัมพันธ์
  • มักเป็นจำนวนเต็มที่เพิ่มขึ้นตามลำดับและไม่ซ้ำกัน
  • ประมวลผลแบบขนานได้น้อย
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
การทำความสะอาดข้อมูลด้วย PySpark

ID ที่เพิ่มขึ้นแบบ Monotonically

pyspark.sql.functions.monotonically_increasing_id()

  • จำนวนเต็ม (64-bit) เพิ่มขึ้นเรื่อย ๆ และไม่ซ้ำกัน
  • ไม่จำเป็นต้องเรียงต่อเนื่อง (อาจมีช่องว่าง)
  • รองรับการประมวลผลแบบขนานเต็มรูปแบบ
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
การทำความสะอาดข้อมูลด้วย PySpark

หมายเหตุ

อย่าลืมว่า Spark เป็นแบบ Lazy!

  • อาจเกิดการเรียงลำดับที่ผิดพลาดได้
  • หากมีการ Join ค่า ID อาจถูกกำหนดหลังจาก Join
  • ทดสอบ Transformation ของคุณเสมอ
การทำความสะอาดข้อมูลด้วย PySpark

มาฝึกกันเถอะ!

การทำความสะอาดข้อมูลด้วย PySpark

Preparing Video For Download...