Dataset distribuiti resilienti in PySpark

Introduzione a PySpark

Benjamin Schmidt

Data Engineer

Cos'è la parallelizzazione in PySpark?

  • Parallelizzazione automatica di dati e calcoli su più nodi in un cluster
  • Elaborazione distribuita di grandi dataset su più nodi
  • I nodi lavoratori elaborano i dati in parallelo, combinandoli alla fine del compito
  • Elaborazione più veloce su larga scala (pensa a gigabyte o terabyte)

Parallelizzazione

Introduzione a PySpark

Capire gli RDD

RDD o Resilient Distributed Datasets:

  • Collezioni di dati distribuite su un cluster con recupero automatico dai guasti dei nodi
  • Ideali per dati su larga scala
  • Immutabili e trasformabili con operazioni come map() o filter(), con azioni come collect() o paralelize() per ottenere risultati o creare RDD
Introduzione a PySpark

Creare un RDD

# Inizializza una sessione Spark
from pyspark.sql import SparkSession

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

# Crea un DataFrame da un csv census_df = spark.read.csv("/census.csv")
# Converti DataFrame in RDD census_rdd = census_df.rdd
# Mostra il contenuto dell'RDD usando collect() census_rdd.collect()
Introduzione a PySpark

Mostrare Collect

# Raccogli l'intero DataFrame in una lista Python locale di oggetti Row
data_collected = df.collect()

# Stampa i dati raccolti
for row in data_collected:
    print(row)
```    
Introduzione a PySpark

RDD vs DataFrame

DataFrame

  • Alto livello: Ottimizzati per facilità d'uso
  • Operazioni tipo SQL: Lavorano con query simili a SQL e operazioni complesse con meno codice
  • Informazioni sullo schema: Contengono colonne e tipi come una tabella SQL

RDD

  • Basso livello: Più flessibili ma richiedono più righe di codice per operazioni complesse
  • Sicurezza dei tipi: Preservano i tipi di dati ma non hanno i benefici di ottimizzazione dei DataFrame
  • Nessuno schema: Più difficile lavorare con dati strutturati come SQL o relazionali
  • Grande scalabilità
  • Molto verbosi rispetto ai DataFrame e poco adatti per analisi
Introduzione a PySpark

Funzioni e metodi utili

  • map(): applica funzioni (anche lambda) su un dataset come: rdd.map(map_function)
  • collect(): raccoglie dati dal cluster come: rdd.collect()
Introduzione a PySpark

Facciamo pratica!

Introduzione a PySpark

Preparing Video For Download...