Aller plus loin avec les DataFrames Spark

Introduction à PySpark

Benjamin Schmidt

Data Engineer

Créer des DataFrames à partir de diverses sources

  • Fichiers CSV : courants pour les données structurées et délimitées
  • Fichiers JSON : format semi-structuré et hiérarchique
  • Fichiers Parquet : optimisés pour l'entreposage et l'interrogation, fréquents en ingénierie des données
  • Exemple :
    spark.read.csv("path/to/file.csv")
    
  • Exemple :
    spark.read.json("path/to/file.json")
    
  • Exemple :
    spark.read.parquet("path/to/file.parquet")
    
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.pandas/api/pyspark.pandas.read_csv
Introduction à PySpark

Inférence de schéma et définition manuelle

  • Spark peut déduire les schémas avec inferSchema=True

  • Définir le schéma manuellement pour plus de contrôle — utile pour des structures fixes

Schéma à grande échelle

Introduction à PySpark

DataTypes dans les DataFrames PySpark

  • IntegerType : nombres entiers
    • P. ex., 1, 3478, -1890456
  • LongType : entiers plus grands
    • P. ex., entiers signés sur 8 octets, 922334775806
  • FloatType et DoubleType : nombres à virgule pour valeurs décimales
    • P. ex., 3.14159
  • StringType : pour le texte ou les chaînes
    • P. ex., "This is an example of a string."
  • ...
Introduction à PySpark

Syntaxe des DataTypes pour les DataFrames PySpark

# Importer les types nécessaires comme classes
from pyspark.sql.types import (StructType,
                            StructField, IntegerType,
                            StringType, ArrayType)

# Construire le schéma
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True),
    StructField("scores", ArrayType(IntegerType()), True)
])

# Appliquer le schéma
df = spark.createDataFrame(data, schema=schema)
Introduction à PySpark

Opérations sur DataFrame : sélection et filtrage

  • Utilisez .select() pour choisir des colonnes précises
  • Utilisez .filter() ou .where() pour filtrer selon des conditions
  • Utilisez .sort() pour trier par un ensemble de colonnes
# Sélectionner et afficher seulement les colonnes name et age
df.select("name", "age").show()
# Filtrer sur age > 30
df.filter(df["age"] > 30).show()
# Utiliser where pour filtrer une valeur précise
df.where(df["age"] == 30).show()
# Utiliser sort pour trier par age
df.sort("age", ascending=False).show()
Introduction à PySpark

Tri et suppression des valeurs manquantes

  • Ordonnez avec .sort() ou .orderBy()
  • Utilisez na.drop() pour supprimer les lignes avec des valeurs nulles
# Trier selon la colonne age
df.sort("age", ascending=False).show()

# Supprimer les valeurs manquantes
df.na.drop().show()

Introduction à PySpark

Aide-mémoire

  • spark.read_json() : charger des données JSON
  • spark.read.schema() : définir explicitement les schémas
  • .na.drop() : supprimer les lignes avec des valeurs manquantes
  • .select(), .filter(), .sort(), .orderBy() : fonctions de manipulation de base
Introduction à PySpark

Passons à la pratique !

Introduction à PySpark

Preparing Video For Download...