Jeux de données distribués résilients dans PySpark

Introduction à PySpark

Benjamin Schmidt

Data Engineer

Qu'est-ce que la parallélisation dans PySpark ?

  • Parallélisation automatique des données et calculs sur plusieurs nœuds d'un cluster
  • Traitement distribué de grands ensembles de données sur plusieurs nœuds
  • Les nœuds de travail traitent les données en parallèle, puis les combinent à la fin de la tâche
  • Traitement plus rapide à grande échelle (pensez en gigaoctets ou téraoctets)

Parallélisation

Introduction à PySpark

Comprendre les RDDs

RDDs ou Jeux de Données Distribués Résilients :

  • Collections de données distribuées sur un cluster avec récupération automatique en cas de défaillance de nœud
  • Idéal pour les données à grande échelle
  • Immuables et transformables avec des opérations comme map() ou filter(), et des actions comme collect() ou paralelize() pour récupérer les résultats ou créer des RDDs
Introduction à PySpark

Créer un RDD

# Initialiser une session Spark
from pyspark.sql import SparkSession

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

# Créer un DataFrame à partir d'un csv census_df = spark.read.csv("/census.csv")
# Convertir le DataFrame en RDD census_rdd = census_df.rdd
# Afficher le contenu du RDD avec collect() census_rdd.collect()
Introduction à PySpark

Afficher Collect

# Collecter l'ensemble du DataFrame dans une liste Python locale d'objets Row
data_collected = df.collect()

# Imprimer les données collectées
for row in data_collected:
    print(row)
```    
Introduction à PySpark

RDDs vs DataFrames

DataFrames

  • Haut niveau : Optimisés pour la facilité d'utilisation
  • Opérations SQL : Travailler avec des requêtes SQL et effectuer des opérations complexes avec moins de code
  • Informations de schéma : Contiennent des colonnes et des types comme une table SQL

RDDs

  • Bas niveau : Plus flexibles mais nécessitent plus de lignes de code pour des opérations complexes
  • Sécurité des types : Conservent les types de données mais n'ont pas les avantages d'optimisation des DataFrames
  • Pas de schéma : Plus difficile à utiliser avec des données structurées comme SQL ou relationnelles
  • Évolutivité importante
  • Très verbeux comparé aux DataFrames et peu performant pour l'analyse
Introduction à PySpark

Fonctions et méthodes utiles

  • map(): applique des fonctions (y compris des fonctions lambda) sur un ensemble de données comme : rdd.map(map_function)
  • collect(): collecte les données à travers le cluster comme : rdd.collect()
Introduction à PySpark

Passons à la pratique !

Introduction à PySpark

Preparing Video For Download...