Resilient Distributed Datasets in PySpark

Introductie tot PySpark

Benjamin Schmidt

Data Engineer

Wat is parallelisatie in PySpark?

  • Automatisch data en berekeningen parallel uitvoeren over meerdere nodes in een cluster
  • Verdeelde verwerking van grote datasets over meerdere nodes
  • Worker nodes verwerken data parallel en combineren aan het einde van de taak
  • Snellere verwerking op schaal (denk aan gigabytes of zelfs terabytes)

Parallelisatie

Introductie tot PySpark

Begrijpen van RDD's

RDD's of Resilient Distributed Datasets:

  • Verdeelde dataverzamelingen over een cluster met automatische herstel bij node-uitval
  • Geschikt voor grootschalige data
  • Onveranderlijk en kunnen worden getransformeerd met operaties zoals map() of filter(), met acties zoals collect() of paralelize() om resultaten op te halen of RDD's te maken
Introductie tot PySpark

Een RDD maken

# Start een Spark-sessie
from pyspark.sql import SparkSession

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

# Maak een DataFrame van een csv census_df = spark.read.csv("/census.csv")
# Converteer DataFrame naar RDD census_rdd = census_df.rdd
# Toon de inhoud van de RDD met collect() census_rdd.collect()
Introductie tot PySpark

Collect tonen

# Verzamel het hele DataFrame in een lokale Python-lijst van Row-objecten
data_collected = df.collect()

# Print de verzamelde data
for row in data_collected:
    print(row)
```    
Introductie tot PySpark

RDD's vs DataFrames

DataFrames

  • Hoog niveau: Geoptimaliseerd voor gebruiksgemak
  • SQL-achtige operaties: Werk met SQL-achtige queries en voer complexe operaties uit met minder code
  • Schema-informatie: Bevat kolommen en types zoals een SQL-tabel

RDD's

  • Laag niveau: Flexibeler maar vereist meer code voor complexe operaties
  • Typeveiligheid: Behoudt datatypes maar mist de optimalisatievoordelen van DataFrames
  • Geen schema: Moeilijker te gebruiken met gestructureerde data zoals SQL of relationele data
  • Grote schaalbaarheid
  • Erg omslachtig vergeleken met DataFrames en slecht in analytics
Introductie tot PySpark

Handige functies en methoden

  • map(): past functies toe (inclusief zelfgeschreven zoals een lambda-functie) op een dataset zoals: rdd.map(map_function)
  • collect(): verzamelt data van de cluster zoals: rdd.collect()
Introductie tot PySpark

Laten we oefenen!

Introductie tot PySpark

Preparing Video For Download...