Partiționare și procesare leneșă

Curățarea datelor cu PySpark

Mike Metzger

Data Engineering Consultant

Partiționare

  • DataFrame-urile sunt împărțite în partiții
  • Dimensiunea partițiilor poate varia
  • Fiecare partiție este procesată independent
Curățarea datelor cu PySpark

Procesare leneșă

  • Transformările sunt leneșe
    • .withColumn(...)
    • .select(...)
  • Nimic nu se execută până la o acțiune
    • .count()
    • .write(...)
  • Transformările pot fi reordonate pentru performanță
  • Uneori poate cauza comportament neașteptat
Curățarea datelor cu PySpark

Adăugarea de ID-uri

Câmpuri ID obișnuite:

  • Frecvente în bazele de date relaționale
  • De obicei, un număr întreg crescător, secvențial și unic
  • Nu sunt foarte paralele
id prenume nume stat
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Curățarea datelor cu PySpark

ID-uri monoton crescătoare

pyspark.sql.functions.monotonically_increasing_id()

  • Întreg (64 de biți), crescător, unic
  • Nu neapărat secvențial (există goluri)
  • Complet paralel
id prenume nume stat
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Curățarea datelor cu PySpark

Note

Atenție, Spark este leneș!

  • Ocazional, ordinea poate fi incorectă
  • La un join, ID-ul poate fi atribuit după join
  • Testați transformările
Curățarea datelor cu PySpark

Să exersăm!

Curățarea datelor cu PySpark

Preparing Video For Download...