Partitioneren en lazy processing

Data opschonen met PySpark

Mike Metzger

Data Engineering Consultant

Partitioneren

  • DataFrames worden opgesplitst in partities
  • Partitiegrootte kan variëren
  • Elke partitie wordt apart verwerkt
Data opschonen met PySpark

Lazy processing

  • Transformaties zijn lazy
    • .withColumn(...)
    • .select(...)
  • Er gebeurt niets tot je een actie uitvoert
    • .count()
    • .write(...)
  • Transformaties kunnen herordend worden voor betere performance
  • Soms geeft dit onverwacht gedrag
Data opschonen met PySpark

ID's toevoegen

Normale ID-velden:

  • Gangbaar in relationele databases
  • Meestal een geheel getal dat oploopt, sequentieel en uniek
  • Niet erg parallel
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Data opschonen met PySpark

Monotonisch stijgende ID's

pyspark.sql.functions.monotonically_increasing_id()

  • Geheel getal (64-bit), stijgend, uniek
  • Niet per se sequentieel (er zijn gaten)
  • Volledig parallel
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Data opschonen met PySpark

Notities

Onthoud: Spark is lazy!

  • Af en toe niet in volgorde
  • Bij een join kan de ID pas na de join worden toegekend
  • Test je transformaties
Data opschonen met PySpark

Laten we oefenen!

Data opschonen met PySpark

Preparing Video For Download...