Rozdělení na oddíly a líné zpracování

Cleaning Data with PySpark

Mike Metzger

Data Engineering Consultant

Rozdělení na oddíly

  • DataFrames jsou rozděleny na oddíly
  • Velikost oddílu se může lišit
  • Každý oddíl je zpracován nezávisle
Cleaning Data with PySpark

Líné zpracování

  • Transformace jsou líné
    • .withColumn(...)
    • .select(...)
  • Nic se neprovede, dokud není spuštěna akce
    • .count()
    • .write(...)
  • Transformace lze přeuspořádat pro lepší výkon
  • Může způsobit neočekávané chování
Cleaning Data with PySpark

Přidávání ID

Běžná pole ID:

  • Obvyklá v relačních databázích
  • Zpravidla celé číslo – rostoucí, sekvenční a jedinečné
  • Nízká míra paralelismu
id příjmení jméno stát
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Cleaning Data with PySpark

Monotónně rostoucí ID

pyspark.sql.functions.monotonically_increasing_id()

  • Celé číslo (64 bit), rostoucí hodnota, jedinečné
  • Nemusí být sekvenční (mohou existovat mezery)
  • Plně paralelní
id příjmení jméno stát
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Cleaning Data with PySpark

Poznámky

Nezapomeňte, Spark je líný!

  • Občas mimo pořadí
  • Při joinu může být ID přiřazeno až po jeho provedení
  • Otestujte své transformace
Cleaning Data with PySpark

Pojďme procvičovat!

Cleaning Data with PySpark

Preparing Video For Download...