Partizionamento e valutazione lazy

Pulizia dei dati con PySpark

Mike Metzger

Data Engineering Consultant

Partizionamento

  • I DataFrame sono suddivisi in partition
  • La dimensione delle partition può variare
  • Ogni partition è elaborata in modo indipendente
Pulizia dei dati con PySpark

Elaborazione lazy

  • Le trasformazioni sono lazy
    • .withColumn(...)
    • .select(...)
  • Non accade nulla finché non esegui un'azione
    • .count()
    • .write(...)
  • Le trasformazioni possono essere riordinate per migliorare le performance
  • A volte provoca comportamenti inattesi
Pulizia dei dati con PySpark

Aggiungere ID

ID normali:

  • Comuni nei database relazionali
  • Di solito un intero crescente, sequenziale e univoco
  • Poco paralleli
id cognome nome stato
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Pulizia dei dati con PySpark

ID monotonicamente crescenti

pyspark.sql.functions.monotonically_increasing_id()

  • Intero (64 bit), cresce nel valore, univoco
  • Non necessariamente sequenziale (ci sono salti)
  • Completamente parallelo
id cognome nome stato
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Pulizia dei dati con PySpark

Note

Ricorda: Spark è lazy!

  • A volte fuori ordine
  • Se fai una join, l'ID può essere assegnato dopo la join
  • Metti alla prova le tue trasformazioni
Pulizia dei dati con PySpark

Passiamo alla pratica !

Pulizia dei dati con PySpark

Preparing Video For Download...