Approfondimenti sui DataFrame di Spark

Introduzione a PySpark

Benjamin Schmidt

Data Engineer

Creare DataFrame da varie fonti dati

  • File CSV: Comuni per dati strutturati e delimitati
  • File JSON: Formato dati semi-strutturato e gerarchico
  • File Parquet: Ottimizzati per archiviazione e query, spesso usati in ingegneria dati
  • Esempio:
    spark.read.csv("path/to/file.csv")
    
  • Esempio:
    spark.read.json("path/to/file.json")
    
  • Esempio:
    spark.read.parquet("path/to/file.parquet")
    
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.pandas/api/pyspark.pandas.read_csv
Introduzione a PySpark

Inferenza schema e definizione manuale

  • Spark può dedurre schemi dai dati con inferSchema=True

  • Definisci manualmente lo schema per un controllo migliore - utile per strutture dati fisse

Schema su larga scala

Introduzione a PySpark

Tipi di dati nei DataFrame PySpark

  • IntegerType: Numeri interi
    • Es., 1, 3478, -1890456
  • LongType: Numeri interi più grandi
    • Es., numeri firmati a 8 byte, 922334775806
  • FloatType e DoubleType: Numeri a virgola mobile per valori decimali
    • Es., 3.14159
  • StringType: Usato per testo o stringhe
    • Es., "Questo è un esempio di stringa."
  • ...
Introduzione a PySpark

Sintassi dei tipi di dati per DataFrame PySpark

# Importa i tipi necessari come classi
from pyspark.sql.types import (StructType,
                            StructField, IntegerType,
                            StringType, ArrayType)

# Costruisci lo schema
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True),
    StructField("scores", ArrayType(IntegerType()), True)
])

# Imposta lo schema
df = spark.createDataFrame(data, schema=schema)
Introduzione a PySpark

Operazioni DataFrame - selezione e filtraggio

  • Usa .select() per scegliere colonne specifiche
  • Usa .filter() o .where() per filtrare righe in base a condizioni
  • Usa .sort() per ordinare per una serie di colonne
# Seleziona e mostra solo le colonne nome e età
df.select("name", "age").show()
# Filtra per età > 30
df.filter(df["age"] > 30).show()
# Usa Where per filtrare un valore specifico
df.where(df["age"] == 30).show()
# Usa Sort per ordinare per età
df.sort("age", ascending=False).show()
Introduzione a PySpark

Ordinamento e rimozione valori mancanti

  • Ordina i dati usando .sort() o .orderBy()
  • Usa na.drop() per rimuovere righe con valori nulli
# Ordina usando la colonna età
df.sort("age", ascending=False).show()

# Elimina valori mancanti
df.na.drop().show()

Introduzione a PySpark

Cheatsheet

  • spark.read_json(): Carica dati da JSON
  • spark.read.schema(): Definisci schemi esplicitamente
  • .na.drop(): Elimina righe con valori mancanti
  • .select(), .filter(), .sort(), .orderBy(): Funzioni base di manipolazione dati
Introduzione a PySpark

Facciamo pratica!

Introduzione a PySpark

Preparing Video For Download...