Introduction à Apache Spark - PDF

Document Details

TollFreePennywhistle2961

Uploaded by TollFreePennywhistle2961

Université Virtuelle du Burkina Faso

Pegdwendé Nicolas SAWADOGO

Tags

Apache Spark traitement de données Big Data informatique

Summary

Ce document présente une introduction à Apache Spark. Il explique l'histoire et les avantages de ce framework de traitement de données, ainsi que des concepts fondamentaux comme les RDD et les DataFrames. L'auteur est Pegdwendé Nicolas SAWADOGO de l'université Virtuelle du Burkina Faso.

Full Transcript

Introduction à Apache Spark Pegdwendé Nicolas SAWADOGO Université Virtuelle du Burkina Faso Version 1.0, Dernière modification : 11 novembre 2023 C HAPITRE 1 Qu’est-ce qu’Apache Spark ? 1.1 Histoire et origine Apache Spark a été initialem...

Introduction à Apache Spark Pegdwendé Nicolas SAWADOGO Université Virtuelle du Burkina Faso Version 1.0, Dernière modification : 11 novembre 2023 C HAPITRE 1 Qu’est-ce qu’Apache Spark ? 1.1 Histoire et origine Apache Spark a été initialement développé à l’UC Berkeley dans le cadre du projet AMPLab en 2009. Le projet visait à créer un nouveau cadre de traitement de données qui serait plus rapide et plus efficace que les modèles existants, surtout pour les applications nécessitant des calculs en mémoire. Le projet Spark a été lancé par Matei Zaharia, alors doctorant à l’UC Berkeley. Zaharia et son équipe ont cherché à résoudre les limitations des systèmes de calcul distribué de l’époque, tels que Hadoop MapReduce, notamment en termes de vitesse et de facilité d’utilisation. L’une des innovations clés de Spark était son modèle de traitement en mémoire (in-memory processing), permettant des traitements de données beaucoup plus rapides que le modèle basé sur disque de Hadoop MapReduce. Spark a été ouvert au public en 2010 sous licence BSD. En 2013, il est entré dans l’Apache Incubator, une étape importante pour la reconnaissance et la croissance de la communauté. Apache Top-Level Project : En 2014, Spark est devenu un projet de premier niveau (top-level project) de la Fondation Apache, signe de sa maturité, de sa communauté active et de son adoption croissante. Spark a introduit le concept de RDD, une collection distribuée de données immuables, per- mettant de réaliser des opérations parallèles de manière efficace et résiliente. Extensions et Bibliothèques : Au fil du temps, Spark a évolué pour inclure des bibliothèques additionnelles, comme Spark SQL pour le traitement des données structurées, MLlib pour le machine lear- ning, GraphX pour le traitement de graphes et Spark Streaming pour le traitement de don- nées en temps réel. 1.2 Avantages par rapport aux autres systèmes de traitement de données Apache Spark offre plusieurs avantages significatifs par rapport à d’autres systèmes de ges- 2 CHAPITRE 1. QU’EST-CE QU’APACHE SPARK ? tion de données, en particulier par rapport à des technologies antérieures comme Hadoop MapReduce. Voici les principaux avantages : 1. Vitesse de Traitement : Spark excelle dans le traitement rapide de grandes quantités de données, principale- ment grâce à son modèle de traitement en mémoire (in-memory processing). Cela le rend beaucoup plus rapide que Hadoop MapReduce pour la plupart des applications. 2. Facilité de Programmation : Spark fournit des API de haut niveau en Scala, Java, Py- thon (PySpark) et R, ce qui le rend accessible à un large éventail de développeurs et de data scientists. Les RDD (Resilient Distributed Datasets) et les DataFrames simpli- fient la manipulation des ensembles de données et la mise en œuvre des opérations de traitement de données. 3. Polyvalence : Spark peut traiter une grande variété de données, qu’elles soient struc- turées ou non structurées. Spark inclut des bibliothèques pour le SQL, le streaming de données, le machine learning (MLlib) et le traitement de graphes (GraphX), permet- tant une large gamme d’applications. 4. Évolutivité : Spark peut facilement évoluer de quelques nœuds à des milliers, permet- tant de traiter de grandes quantités de données (scalabilité horizontale). Spark utilise les ressources de manière plus efficace que Hadoop MapReduce, en particulier pour les applications nécessitant plusieurs passes sur les données. 5. Spark Streaming : Spark propose une solution robuste pour le traitement de flux de données en temps réel, permettant une analyse rapide et en continu des données en mouvement. Communauté Active et Support : 6. Développement Continu : Étant un projet open-source, Spark bénéficie d’une com- munauté de développeurs active et d’un soutien continu. Résolution Rapide des Pro- blèmes : La grande communauté contribue à une résolution rapide des bugs et à l’amélioration constante des fonctionnalités. 3 C HAPITRE 2 Concepts fondamentaux Apache Spark introduit deux abstractions de données principales : les RDD (Resilient Dis- tributed Datasets) et les DataFrames. Ces concepts sont fondamentaux pour comprendre comment Spark traite les données à grande échelle. 2.1 Notion de RDD (Resilient Distributed Datasets) Un RDD est une collection de données distribuée, immuable et tolérante aux pannes. Il peut être créé à partir de fichiers stockés dans un système de fichiers distribué ou à partir de collections en Scala ou Java. Caractéristiques Principales : — Immutabilité : Une fois qu’un RDD est créé, il ne peut pas être modifié. Toutes les transformations sur un RDD créent un nouveau RDD. Tolérance aux Pannes : Les RDDs sont résistants aux pannes grâce à la notion de linéage, permettant à Spark de reconstituer les données en cas de perte. — Distribution : Les données dans un RDD sont réparties sur plusieurs nœuds d’un clus- ter, permettant des opérations parallèles. Opérations sur les RDDs : — Transformations : Opérations comme map, filter, flatMap, qui transforment les RDDs en nouveaux RDDs sans déclencher une exécution immédiate. — Actions : Opérations comme reduce, collect, count, qui déclenchent l’exécution des transformations et retournent des résultats au driver. 2.2 Dataframes Un DataFrame dans Spark est une collection distribuée de données organisées en colonnes nommées, conceptuellement équivalent à une table dans une base de données relationnelle ou à un dataframe en R/Python (Pandas). Caractéristiques Principales : 4 CHAPITRE 2. CONCEPTS FONDAMENTAUX — Schéma : Chaque DataFrame a un schéma qui définit le nom, le type et d’autres infor- mations sur les colonnes. — Optimisation des Requêtes : Spark SQL utilise le Catalyst Query Optimizer pour opti- miser les requêtes sur les DataFrames. — Interopérabilité des Langages : Les DataFrames peuvent être manipulés en Scala, Java, Python (PySpark) et R, offrant une grande flexibilité. Opérations sur les DataFrames : — Transformations : Comme la sélection (select), le filtrage (filter), l’agrégation (groupBy), etc. — Actions : Comme show, count, collect, qui déclenchent l’exécution des transforma- tions et produisent des résultats. 5 C HAPITRE 3 Manipulation de données avec pySpark 3.1 Manipulation de RDD Les RDD sont des collections distribuées de données sur lesquelles vous pouvez effectuer des opérations en parallèle. Voici un mini-guide de base pour manipuler des RDD en utilisant PySpark : 3.1.1 Création d’un RDD — À partir d’une Collection Locale :   1 data = [1, 2, 3, 4, 5] 2 rdd = sc. parallelize (data)   — À partir d’un Fichier :   1 rdd = sc.textFile("path/to/file")   3.1.2 Transformations sur les RDD Les transformations sont des opérations qui créent un nouveau RDD à partir d’un RDD exis- tant. — map : Applique une fonction à chaque élément du RDD.   1 rdd2 = rdd.map(lambda x: x * x)   — filter : Retourne un nouveau RDD contenant seulement les éléments qui satisfont un prédicat.   1 filtered rdd = rdd. filter (lambda x: x % 2 == 0)   — flatMap : Similaire à map, mais chaque élément d’entrée peut être mappé à 0 ou plu- sieurs éléments de sortie.   1 flat rdd = rdd.flatMap(lambda x: (x, x*x))   6 3.1.3 Actions sur les RDD CHAPITRE 3. MANIPULATION DE DONNÉES AVEC PYSPARK — union, intersection, distinct, etc. : Opérations pour combiner ou modifier des en- sembles de données. 3.1.3 Actions sur les RDD Les actions sont des opérations qui renvoient une valeur après avoir exécuté un calcul sur le RDD. — collect : Retourne tous les éléments du RDD.   1 all data = rdd.collect()   — count : Compte le nombre d’éléments dans le RDD.   1 count = rdd.count()   — take : Retourne les premiers n éléments du RDD.   1 first three = rdd.take(3)   — reduce : Aggrège les éléments du RDD en utilisant une fonction.   1 sum = rdd.reduce(lambda x, y: x + y)   3.1.4 Exemple complet   1 from pyspark import SparkContext 2 3 # Initialisation de SparkContext 4 sc = SparkContext("local", "RDD Example") 5 6 # Creation d’un RDD 7 data = [1, 2, 3, 4, 5] 8 rdd = sc. parallelize (data) 9 10 # Transformation: multiplication de chaque element par 2 11 multiplied rdd = rdd.map(lambda x: x * 2) 12 13 # Action: collecter les resultats 14 results = multiplied rdd.collect () 15 16 # Affichage des resultats 17 print( results ) 18 19 # Fermeture de SparkContext 20 sc.stop()   7 Introduction à Apache Spark- Pegdwendé Nicolas SAWADOGO 3.2 Utilisation des DataFrames et des opérations SQL L’utilisation des DataFrames et des opérations SQL dans PySpark est un aspect essentiel de la manipulation de données avec Apache Spark, particulièrement pour les données structu- rées. Les DataFrames offrent une abstraction plus élevée que les RDD, avec un modèle de données intégré et des optimisations de performances. Voici un guide sur l’utilisation des DataFrames et des opérations SQL avec PySpark : 3.2.1 Création de DataFrames — À partir d’un RDD :   1 rdd = sc. parallelize ([(1, "Alice"), (2, "Bob")]) 2 df = rdd.toDF(["id", "name"])   — À partir de Données Locales :   1 data = [("Alice", 1), ("Bob", 2)] 2 df = spark.createDataFrame(data, ["name", "id"])   — À partir de Fichiers (comme CSV, Parquet, JSON, etc.) :   1 df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)   3.2.2 Opérations de Base sur les DataFrames — Affichage des Données :   1 df.show()   — Sélection de Colonnes :   1 df. select("name").show()   — Filtrage des Données :   1 df. filter (df["id"] > 1).show()   — Agrégations :   1 df.groupBy("name").count().show()   — Tri :   1 df. sort("id").show()   8 3.2.3 Utilisation de SQL avecCHAPITRE Spark 3. MANIPULATION DE DONNÉES AVEC PYSPARK 3.2.3 Utilisation de SQL avec Spark PySpark permet d’exécuter des requêtes SQL directement sur les DataFrames. — Créer une Vue Temporaire :   1 df.createOrReplaceTempView("people")   — Exécuter une Requête SQL :   1 spark.sql("SELECT * FROM people WHERE id > 1").show()   3.2.4 Exemple complet   1 from pyspark.sql import SparkSession 2 3 # Création d’une session Spark 4 spark = SparkSession.builder.appName("DataFrame Example").getOrCreate() 5 6 # Création d’un DataFrame 7 data = [("Alice", 1), ("Bob", 2), ("Carol", 3)] 8 columns = ["name", "id"] 9 df = spark.createDataFrame(data, columns) 10 11 # Opérations sur le DataFrame 12 df.show() 13 df. filter (df["id"] > 1).show() 14 df. select("name").show() 15 16 # Utilisation de SQL 17 df.createOrReplaceTempView("people") 18 spark.sql("SELECT * FROM people WHERE id > 1").show() 19 20 # Fermeture de la session Spark 21 spark.stop()   3.3 Traitement de données en temps réel avec Spark Streaming 9 Références 1. https://spark.apache.org/ 2. https://www.docker.com/ 3. https://www.ibm.com/fr-fr/topics/hdfs 4. https://openclassrooms.com/fr/courses/4297166-realisez-des-calculs-distribues-sur-d 4297173-prenez-vos-marques-dans-le-monde-du-big-data 10 3.2.4 Exemple complet CHAPITRE 3. MANIPULATION DE DONNÉES AVEC PYSPARK 11 Introduction à Apache Spark- Pegdwendé Nicolas SAWADOGO 12 3.2.4 Exemple complet CHAPITRE 3. MANIPULATION DE DONNÉES AVEC PYSPARK 13 Introduction à Apache Spark- Pegdwendé Nicolas SAWADOGO 14 Pegdwendé Nicolas SAWADOGO, Université Virtuelle du Burkina Faso, 11 novembre 2023

Use Quizgecko on...
Browser
Browser