Resilient Distributed Datasets in PySpark

Einführung in PySpark

Benjamin Schmidt

Data Engineer

Was ist Parallelisierung in PySpark?

  • Daten und Berechnungen über mehrere Nodes in einem Cluster automatisch parallelisieren
  • Verteilte Verarbeitung großer Datensätze über mehrere Nodes hinweg
  • Worker-Nodes bearbeiten die Daten gleichzeitig und setzen sie am Ende der Aufgabe zusammen.
  • Schnellere Verarbeitung in großem Maßstab (Gigabytes oder sogar Terabytes)

Parallelisierung

Einführung in PySpark

RDDs verstehen

RDDs oder Resilient Distributed Datasets:

  • Verteilte Datensammlungen über einen Cluster mit automatischer Wiederherstellung bei Node-Ausfällen
  • Gut für große Datenmengen
  • Unveränderlich und kann 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

# Initialize a Spark session
from pyspark.sql import SparkSession

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

# Create a DataFrame from a csv census_df = spark.read.csv("/census.csv")
# Convert DataFrame to RDD census_rdd = census_df.rdd
# Show the RDD's contents using collect() census_rdd.collect()
Einführung in PySpark

Collect ausgeben

# Collect the entire DataFrame into a local Python list of Row objects
data_collected = df.collect()

# Print the collected data
for row in data_collected:
    print(row)
```    
Einführung in PySpark

RDDs vs. DataFrames

DataFrames

  • High-level: Einfach zu nutzen
  • SQL-ähnliche Operationen: Arbeite mit SQL-ähnlichen Abfragen und führe komplexe Operationen mit weniger Code durch.
  • Schema Information: Enthält Spalten und Typen wie eine SQL-Tabelle

RDDS

  • Low-level: Flexibler, aber mehr Codezeilen für komplizierte Operationen.
  • Typsicherheit: Datentyperhaltung, aber ohne DataFrame-Optimierungsvorteile
  • Kein Schema: Schwieriger mit strukturierten Daten wie SQL oder relationalen Daten zu arbeiten.
  • Große Skalierung
  • Im Vergleich zu DataFrames sehr transparent und nicht so gut für Analysen
Einführung in PySpark

Einige nützliche Funktionen und Methoden

  • map(): Die Methode wendet Funktionen (auch solche, die wir wie eine Lambda-Funktion schreiben) auf einen Datensatz an, zum Beispiel: rdd.map(map_function)
  • collect(): sammelt Daten aus dem ganzen Cluster, zum Beispiel: rdd.collect()
Einführung in PySpark

Lass uns üben!

Einführung in PySpark

Preparing Video For Download...