Resiliente verteilte Datensätze in PySpark

Einführung in PySpark

Benjamin Schmidt

Data Engineer

Was ist Parallelisierung in PySpark?

  • Automatische Parallelisierung von Daten und Berechnungen über mehrere Knoten im Cluster
  • Verteilte Verarbeitung großer Datensätze über mehrere Knoten
  • Worker-Knoten verarbeiten Daten parallel und kombinieren sie am Ende der Aufgabe
  • Schnellere Verarbeitung im großen Maßstab (denken Sie an Gigabytes oder sogar Terabytes)

Parallelisierung

Einführung in PySpark

Verständnis von RDDs

RDDs oder Resiliente Verteilte Datensätze:

  • Verteilte Datensammlungen im Cluster mit automatischer Wiederherstellung bei Knotenausfällen
  • Geeignet für große Datenmengen
  • Unveränderlich und können mit Operationen wie map() oder filter() transformiert werden, mit Aktionen wie collect() oder paralelize() um Ergebnisse abzurufen oder RDDs zu erstellen
Einführung in PySpark

Erstellen eines RDD

# Initialisiere eine Spark-Session
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("RDDExample").getOrCreate()

# Erstelle ein DataFrame aus einer CSV census_df = spark.read.csv("/census.csv")
# Konvertiere DataFrame zu RDD census_rdd = census_df.rdd
# Zeige den Inhalt des RDDs mit collect() census_rdd.collect()
Einführung in PySpark

Collect anzeigen

# Sammle das gesamte DataFrame in eine lokale Python-Liste von Row-Objekten
data_collected = df.collect()

# Drucke die gesammelten Datenor row in data_collected:
    print(row)
```    
Einführung in PySpark

RDDs vs DataFrames

DataFrames

  • Hohe Ebene: Optimiert für einfache Nutzung
  • SQL-ähnliche Operationen: Arbeiten mit SQL-ähnlichen Abfragen und führen komplexe Operationen mit weniger Code aus
  • Schema-Informationen: Enthalten Spalten und Typen wie eine SQL-Tabelle

RDDS

  • Niedrige Ebene: Flexibler, aber erfordert mehr Codezeilen für komplexe Operationen
  • Typensicherheit: Bewahren Datentypen, haben aber nicht die Optimierungsvorteile von DataFrames
  • Kein Schema: Schwieriger mit strukturierten Daten wie SQL oder relationalen Daten zu arbeiten
  • Große Skalierung
  • Sehr ausführlich im Vergleich zu DataFrames und schlecht in der Analyse
Einführung in PySpark

Nützliche Funktionen und Methoden

  • map(): wendet Funktionen (auch eigene wie Lambda-Funktionen) auf ein Dataset an, z.B.: rdd.map(map_function)
  • collect(): sammelt Daten aus dem Cluster, z.B.: rdd.collect()
Einführung in PySpark

Lass uns üben!

Einführung in PySpark

Preparing Video For Download...