Partitionnement et traitement paresseux

Nettoyer des données avec PySpark

Mike Metzger

Data Engineering Consultant

Partitionnement

  • Les DataFrames sont divisés en partitions
  • La taille des partitions peut varier
  • Chaque partition est traitée indépendamment
Nettoyer des données avec PySpark

Traitement paresseux

  • Les transformations sont paresseuses
    • .withColumn(...)
    • .select(...)
  • Rien n'est exécuté avant une action
    • .count()
    • .write(...)
  • Les transformations peuvent être réordonnées pour la performance
  • Peut parfois causer des comportements inattendus
Nettoyer des données avec PySpark

Ajout d'ID

Champs d'ID classiques :

  • Courants dans les bases relationnelles
  • Généralement un entier croissant, séquentiel et unique
  • Peu parallèles
id nom prénom province
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Nettoyer des données avec PySpark

ID croissants monotones

pyspark.sql.functions.monotonically_increasing_id()

  • Entier (64 bits), croissant, unique
  • Pas nécessairement séquentiel (présence de sauts)
  • Entièrement parallèle
id nom prénom province
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Nettoyer des données avec PySpark

Notes

Rappelez-vous : Spark est paresseux !

  • Parfois hors séquence
  • Lors d'une jointure, l'ID peut être attribué après la jointure
  • Vérifiez vos transformations
Nettoyer des données avec PySpark

Passons à la pratique !

Nettoyer des données avec PySpark

Preparing Video For Download...