เทคนิคการจัดการข้อมูล

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

Mike Metzger

Data Engineering Consultant

กำลังพยายาม parse ข้อมูลแบบใด?

  • ข้อมูลที่ไม่ถูกต้อง
    • แถวว่าง
    • บรรทัดคอมเมนต์
    • ส่วนหัว
  • โครงสร้างแบบซ้อน
    • ตัวคั่นหลายตัว
  • ข้อมูลที่ไม่สม่ำเสมอ
    • จำนวนคอลัมน์ต่อแถวไม่เท่ากัน
  • เน้นที่ข้อมูล CSV
width, height, image

# This is a comment
200    300    affenpinscher;0
600    450    Collie;307    Collie;101
600    449    Japanese_spaniel;23
การทำความสะอาดข้อมูลด้วย PySpark

Stanford ImageNet annotations

  • ระบุสายพันธุ์สุนัขในรูปภาพ
  • แสดงรายการสุนัขทั้งหมดที่พบในรูปภาพ
  • ข้อมูลเมตาอื่น ๆ (โฟลเดอร์หลัก, ขนาดรูปภาพ ฯลฯ)

ตัวอย่างแถวข้อมูล:

02111277    n02111277_3206    500    375    Newfoundland,110,73,416,298
02108422    n02108422_4375    500    375    bull_mastiff,101,90,214,356 \
 bull_mastiff,282,74,416,370
การทำความสะอาดข้อมูลด้วย PySpark

การลบบรรทัดว่าง ส่วนหัว และคอมเมนต์

CSV parser ของ Spark:

  • ลบบรรทัดว่างโดยอัตโนมัติ
  • ลบคอมเมนต์ได้โดยใช้อาร์กิวเมนต์เสริม
df1 = spark.read.csv('datafile.csv.gz', comment='#')
  • จัดการฟิลด์ส่วนหัวได้
    • กำหนดผ่านอาร์กิวเมนต์
    • ถูกละเว้นหากกำหนด schema ไว้แล้ว
df1 = spark.read.csv('datafile.csv.gz', header='True')
การทำความสะอาดข้อมูลด้วย PySpark

การสร้างคอลัมน์อัตโนมัติ

Spark จะ:

  • สร้างคอลัมน์ใน DataFrame โดยอัตโนมัติตามอาร์กิวเมนต์ sep
    df1 = spark.read.csv('datafile.csv.gz', sep=',')
    
  • ค่าเริ่มต้นใช้ ,
  • ยังคง parse ได้สำเร็จแม้ไม่มี sep อยู่ในสตริง
    df1 = spark.read.csv('datafile.csv.gz', sep='*')
    
  • เก็บข้อมูลในคอลัมน์ที่ค่าเริ่มต้นชื่อ _c0
  • รองรับการจัดการตัวคั่นแบบซ้อนได้อย่างถูกต้อง
การทำความสะอาดข้อมูลด้วย PySpark

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

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

Preparing Video For Download...