Partycjonowanie i leniwe przetwarzanie

Czyszczenie danych w PySpark

Mike Metzger

Data Engineering Consultant

Partycjonowanie

  • DataFrames są podzielone na partycje
  • Rozmiar partycji może się różnić
  • Każda partycja jest przetwarzana niezależnie
Czyszczenie danych w PySpark

Leniwe przetwarzanie

  • Transformacje są leniwe
    • .withColumn(...)
    • .select(...)
  • Nic nie jest wykonywane do momentu wywołania akcji
    • .count()
    • .write(...)
  • Transformacje mogą być przestawiane dla lepszej wydajności
  • Może to powodować nieoczekiwane zachowania
Czyszczenie danych w PySpark

Dodawanie identyfikatorów

Zwykłe pola ID:

  • Powszechne w relacyjnych bazach danych
  • Zazwyczaj całkowite, rosnące, sekwencyjne i unikalne
  • Słabo zrównoleglone
id nazwisko imię stan
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Czyszczenie danych w PySpark

Monotonicznie rosnące identyfikatory

pyspark.sql.functions.monotonically_increasing_id()

  • Całkowity (64-bit), rosnący, unikalny
  • Niekoniecznie sekwencyjny (mogą występować luki)
  • W pełni zrównoleglony
id nazwisko imię stan
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Czyszczenie danych w PySpark

Uwagi

Pamiętaj, Spark jest leniwy!

  • Czasem kolejność jest zaburzona
  • Przy złączeniu ID może zostać przypisany po jego wykonaniu
  • Należy testować własne transformacje
Czyszczenie danych w PySpark

Czas na ćwiczenia!

Czyszczenie danych w PySpark

Preparing Video For Download...