Identifiez les atouts de Spark

DĂ©couvrez Apache Spark : Le moteur du calcul distribuĂ© 🚀

Dans le chapitre prĂ©cĂ©dent, on a explorĂ© le calcul distribuĂ©, cette super technique qui permet de rĂ©soudre des problĂšmes complexes en faisant travailler plusieurs ordinateurs ensemble. Maintenant, place Ă  Apache Spark, le framework qui incarne parfaitement ces principes et qui va devenir votre meilleur alliĂ© pour traiter des montagnes de donnĂ©es. đŸ”ïž

Comme vous avez pu le constater, nous vivons dans un monde oĂč les donnĂ©es explosent de partout : rĂ©seaux sociaux, capteurs IoT, transactions bancaires, images mĂ©dicales
 Bref, le fameux Big Data. Les outils traditionnels, comme Hadoop MapReduce, ont bien essayĂ© de suivre le rythme, mais ils ont vite montrĂ© leurs limites. Trop lents, trop complexes, pas assez flexibles. C’est exactement dans ce contexte-là qu’Apache Spark entre en scĂšne. 🎬

Spark a Ă©tĂ© créé pour rĂ©soudre un problĂšme simple mais crucial : traiter des donnĂ©es massives plus rapidement et plus efficacement. Les frameworks existants, comme Hadoop MapReduce, Ă©taient conçus pour Ă©crire et lire des donnĂ©es sur des disques durs, ce qui ralentissait tout le processus. C’est un peu comme si vous deviez aller chercher chaque ingrĂ©dient de votre recette au supermarchĂ© Ă  chaque Ă©tape de la prĂ©paration. 🛒🍳

Pourquoi hadoop a fait le choix d'écrire tout sur disque dur alors si c'est stupide de faire ça ?

Ah, excellente question ! 🧐 En fait, le choix d’Hadoop d’écrire tout sur disque dur n’était pas "stupide" Ă  l’époque (au dĂ©but des annĂ©es 2000), mais plutĂŽt une solution pragmatique aux contraintes technologiques et aux besoins de l’époque (la RAM Ă©tait beaucoup plus chĂšre que maintenant, la vitesse demandĂ©e n’était pas du tout la mĂȘme, le Big Data n’avait pas la mĂȘme consistance etc
). Voici pourquoi Hadoop a optĂ© pour cette approche, et pourquoi Spark a pu faire mieux plus tard. 🚀

Les crĂ©ateurs de Spark se sont dit : "Et si on gardait tout en mĂ©moire ?" Et c’est exactement ce qu’ils ont fait. En stockant les donnĂ©es intermĂ©diaires en mĂ©moire vive (RAM), Spark a rĂ©volutionnĂ© le traitement des donnĂ©es, rendant les calculs jusqu’à 100 fois plus rapides. 🚀

Alors, pourquoi choisir Spark plutît qu’un autre framework ?

Voici ce qui le rend unique :

  • Vitesse impressionnante : On vient d’en parler, je ne reviens pas dessus. C’est comme passer d’une vieille 2CV Ă  une Ferrari. đŸŽïž

  • Polyvalence : Spark n’est pas limitĂ© Ă  une seule tĂąche. Il peut faire du traitement par lots, de l’analyse en temps rĂ©el, du machine learning, et mĂȘme de l’analyse de graphe. C’est un couteau suisse du Big Data. đŸ”Ș

  • SimplicitĂ© d’utilisation : Avec PySpark, Spark est accessible aux dĂ©veloppeurs Python, ce qui le rend plus convivial que des frameworks basĂ©s sur Java ou Scala. Pas besoin de tout rĂ©apprendre ! 🐍 De plus, les API de Spark sont conçues pour ĂȘtre faciles Ă  utiliser, mĂȘme pour les dĂ©butants.

  • ScalabilitĂ© horizontale : Ceci est bien entendu un prĂ©requis pour pouvoir faire partie de la catĂ©gorie des frameworks de calcul distribuĂ©. Cependant, c’est bien de noter que Spark le fait tout aussi bien que les autres si ce n’est mieux de par sa simplicitĂ© d’utilisation. Qui d’entre nous achĂšterait un smartphone qui peut tout faire sauf
 appeler ! đŸ“±

L’écosystĂšme de Spark : Un couteau suisse du Big Data đŸ› ïž

Comme dit prĂ©cĂ©demment, au-delĂ  de sa vitesse impressionnante, Spark se distingue par son Ă©cosystĂšme riche et intĂ©grĂ©, conçu pour rĂ©pondre Ă  une multitude de dĂ©fis du traitement de donnĂ©es. Regardons donc d’un peu plus prĂšs ce qu’il y a dans la boĂźte Ă  outils de Spark.

Spark a repĂ©rĂ© cinq domaines clĂ©s dans lesquels il peut vous simplifier la vie. Et comme vous vous en doutez, dans chacun de ces domaines, Spark gĂšre la partie calcul distribuĂ© pour vous, sans que vous ayez Ă  vous en soucier. Vous pouvez vous concentrer sur votre problĂšme, et Spark s’occupe du reste. Voici comment il vous facilite la vie.

Utiliser Spark avec Python : PySpark

Spark a Ă©tĂ© conçu tout en prenant en compte la simplicitĂ© de prise en main, pour vous, les dĂ©veloppeurs. Sympa, non ? 😊

Python est dĂ©jĂ  ultra-populaire dans les domaines de la science des donnĂ©es et de l’ingĂ©nierie des donnĂ©es, et PySpark agit comme un pont entre la simplicitĂ© de Python et la puissance de Spark. Vous pouvez Ă©crire des applications Spark avec la mĂȘme facilitĂ© que si vous codiez en Python pur. Plus besoin de se battre avec des concepts complexes ou des langages obscurs : PySpark rend le calcul distribuĂ© accessible Ă  la majoritĂ© d’entre nous. 🚀

Quand vous commencez Ă  utiliser PySpark, la premiĂšre chose que vous allez crĂ©er est une SparkSession. C’est l’objet central qui vous permet d’interagir avec Spark. En gros, c’est comme le chef d’orchestre de votre application Spark. đŸŽ»

from pyspark.sql import SparkSession

# Créer une SparkSession
spark = SparkSession.builder \
    .appName("MonAppSpark") \  # Nom de votre application
    .getOrCreate()

Ce que fait ce code :

  • Il crĂ©e une SparkSession, qui est le point d’entrĂ©e pour utiliser Spark.

  • Le nom de l’application (appName) est utile pour identifier votre job dans l’interface de monitoring de Spark.

  • getOrCreate() permet de rĂ©utiliser une session existante si elle est dĂ©jĂ  créée, ou d’en crĂ©er une nouvelle sinon.

C’est grñce à cet objet que vous allez pouvoir exploiter toute la puissance de Spark, tout en restant dans l’environnement convivial de Python. 🐍

Interroger des données avec Spark SQL

Ensuite, Spark s’est attardĂ© sur les diffĂ©rents domaines d’utilisation de son framework. Le premier sur lequel on s’attarde en gĂ©nĂ©ral est l’extraction de donnĂ©es via requĂȘtes SQL. MĂȘme si vous avez besoin d’interroger des tĂ©raoctets de donnĂ©es, pas de problĂšme, Spark SQL le gĂšrera pour vous. Ainsi, vous pouvez poser des questions Ă  vos donnĂ©es comme si vous utilisiez une base de donnĂ©es classique. Par exemple :

  • "Combien d’utilisateurs ont achetĂ© ce produit ?"

  • "Quel est le revenu moyen par rĂ©gion ?"

Et regardez comment c’est simple :

from pyspark.sql import SparkSession

# Créer une session Spark
spark = SparkSession.builder.appName("SparkSQLExample").getOrCreate()

# Charger un fichier CSV en DataFrame
df = spark.read.csv("data.csv", header=True, inferSchema=True)

# ExĂ©cuter une requĂȘte SQL
df.createOrReplaceTempView("data")
result = spark.sql("SELECT region, AVG(revenue) FROM data GROUP BY region")

# Afficher le résultat
result.show()

Faire de l’apprentissage automatique avec MLlib

Quel autre domaine est Ă©galement gourmand en ressources informatiques ? Et oui, le Machine Learning (ML). Tout simplement car on souhaite souvent entraĂźner un modĂšle de ML sur des donnĂ©es massives. MLlib est la partie de Spark spĂ©cialisĂ©e pour ça. Que ce soit pour reconnaĂźtre des images, classer des textes, ou prĂ©dire des tendances, MLlib gĂšre la distribution des calculs sur votre cluster. Vous n’avez qu’à dĂ©finir votre modĂšle, et Spark s’occupe de le faire tourner sur des milliers de machines si nĂ©cessaire. 

La syntaxe est volontairement trĂšs proche de celle de scikit-learn afin d’ĂȘtre le plus facile possible Ă  prendre en main pour ceux qui font dĂ©jĂ  du ML d’autre part. Regardez:

from pyspark.ml.classification import LogisticRegression
from pyspark.ml.feature import VectorAssembler
from pyspark.sql import SparkSession

# Créer une session Spark
spark = SparkSession.builder.appName("MLlibExample").getOrCreate()

# Charger des données
data = spark.read.csv("data.csv", header=True, inferSchema=True)

# Préparer les données
assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")
data = assembler.transform(data)

# Entraßner un modÚle de régression logistique
lr = LogisticRegression(labelCol="label", featuresCol="features")
model = lr.fit(data)

# Faire des prédictions
predictions = model.transform(data)
predictions.show()

Analyser des graphes avec GraphX

Un domaine que vous connaissez peut-ĂȘtre moins mais qui est Ă©galement trĂšs demandĂ© dans le domaine du Big Data est la recherche au sein d’immenses graphes de donnĂ©es. Et si vos donnĂ©es ressemblent Ă  un rĂ©seau complexe (comme des relations entre utilisateurs ou des connexions dans un rĂ©seau social), GraphX est l’outil de l’écosystĂšme Spark que vous allez adorer. Il vous permet d’analyser des graphes Ă  grande Ă©chelle, en exploitant la puissance de Spark pour traiter des millions de nƓuds et de connexions. LĂ  encore, Spark gĂšre la distribution des calculs, vous n’avez qu’à vous concentrer sur l’analyse.

from pyspark.sql import SparkSession
from graphframes import GraphFrame

# Créer une session Spark
spark = SparkSession.builder.appName("GraphXExample").getOrCreate()

# CrĂ©er des DataFrames pour les nƓuds et les arĂȘtes
vertices = spark.createDataFrame([("1", "Alice"), ("2", "Bob")], ["id", "name"])
edges = spark.createDataFrame([("1", "2", "friend")], ["src", "dst", "relationship"])

# Créer un graphe
graph = GraphFrame(vertices, edges)

# Trouver les connexions (par exemple, les amis d'Alice)
results = graph.find("(a)-[e]->(b)").filter("a.name = 'Alice'")
results.show()

Traiter des données en temps réel avec Spark Streaming

Enfin, si vous avez besoin de traiter des donnĂ©es en temps rĂ©el (comme des flux de logs ou des transactions financiĂšres), Spark Streaming est Ă©galement disponible. Cet Ă©lĂ©ment de l’écosystĂšme Spark est bien moins mis en avant car d’autres outils, plus spĂ©cialisĂ©s, existent sur le marchĂ©, mais il reste une option intĂ©ressante si vous utilisez dĂ©jĂ  Spark pour d’autres aspects de votre projet. Il vous permet de traiter des donnĂ©es en continu, comme si vous aviez un robinet de donnĂ©es qui ne s’arrĂȘte jamais.

from pyspark.streaming import StreamingContext
from pyspark.sql import SparkSession

# Créer une session Spark
spark = SparkSession.builder.appName("StreamingExample").getOrCreate()
ssc = StreamingContext(spark.sparkContext, batchDuration=5)  # Toutes les 5 secondes

# Créer un flux de données à partir d'un dossier
lines = ssc.textFileStream("input_folder")

# Traiter chaque ligne du flux
lines.foreachRDD(lambda rdd: rdd.foreach(print))

# Démarrer le streaming
ssc.start()
ssc.awaitTermination()

Installez PySpark

Toujours lĂ  👀 ? Chapeau đŸŽ©! Mais je sens bien qu’il est temps de passer Ă  un peu de pratique si je souhaite conserver votre attention 😉.

Passons donc Ă  l’installation de Pyspark afin de pouvoir tranquillement nous diriger vers le traitement distribuĂ© de nos images mĂ©dicales.

Étape 1 : Installer Java

Oui, Java. Spark est Ă©crit en Scala, qui tourne sur la Java Virtual Machine (JVM). Donc, il va vous falloir installer Java 8 ou 11 si vous ne l’avez pas dĂ©jĂ  fait. Pas de panique, vous n’aurez pas Ă  mettre les mains dans ce langage de programmation, c'est juste pour faire tourner Spark avec votre code Python. ☕

Est-ce que j'ai dĂ©jĂ  Java installĂ©, et si oui, quelle version ? đŸ€”

Vous avez raison, commençons par lĂ . Je vais vous guider pour vĂ©rifier ça. Rassurez-vous, c’est plus simple que de trouver une aiguille dans une botte de foin (promis). 😉

Ouvrez un terminal:

  • Sur Windows đŸ–„ïž: Appuyez sur Win + R, tapez cmd, puis appuyez sur EntrĂ©e. Bienvenue dans le monde mystĂ©rieux de l’invite de commandes. đŸ§™â€â™‚ïž

  • Sur Linux 🐧, je ne devrais pas avoir Ă  vous le dire, mais bon, c’est bien parce que c’est vous: Appuyez sur Ctrl + Alt + T. Attention, vous venez juste de mettre la main sur l’outil le plus puissant au monde ! đŸ’„

  • Sur Mac 🍏: Appuyez sur Cmd + Espace pour ouvrir Spotlight (le moteur de recherche de Mac), puis tapez "Terminal" et appuyez sur EntrĂ©e. Et hop, le terminal s’ouvre ! 🚀

Ensuite, tapez la commande suivante:

java -version

Si Java est installé, vous verrez quelque chose comme ceci :

openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

Ici, la version est Java 11. Si vous voyez 8.x.x, c’est Java 8.

Si Java n’est pas installĂ©, vous verrez un message du genre :

Command 'java' not found, but can be installed with:
sudo apt install openjdk-11-jre-headless  # version 11.0.11+9-0ubuntu2~20.04
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-8-jre-headless   # version 8u292-b10-0ubuntu1~20.04

Dans ce cas, il faut installer Java. 😉

Et bien justement, passons à l’installation cette fois-ci !

Pour les utilisateurs de Linux/Mac 🐧🍏

Ouvrez votre terminal et tapez :

sudo apt-get update
sudo apt-get install openjdk-11-jdk

Pour les utilisateurs de Windows đŸ–„ïž

Téléchargez Java depuis le site officiel d'Oracle et suivez les instructions d'installation.

Étape 2 : Installer PySpark

Maintenant, le moment que vous attendiez tous : installer PySpark ! 🎉

Si vous ne savez pas ce qu’est un environnement virtuel ou comment en crĂ©er un, voici un lien pour rĂ©aliser cette Ă©tape.

Ouvrez votre terminal (ou votre invite de commandes) et tapez :

pip install pyspark

Et voilĂ  ! PySpark est installĂ©. C'Ă©tait facile, non ? 😎

Étape 3 : VĂ©rifier l'installation

Pour ĂȘtre sĂ»r que tout fonctionne, on va faire un petit test. CrĂ©ez un fichier Python, par exempletest_pyspark.pyet collez-y ce code : 

from pyspark.sql import SparkSession

# Créer une session Spark
spark = SparkSession.builder.appName("TestPySpark").getOrCreate()

# Créer un DataFrame simple
data = [("Alice", 1), ("Bob", 2), ("Cathy", 3)]
df = spark.createDataFrame(data, ["Name", "Age"])

# Afficher le DataFrame
df.show()

# Fermer la session Spark  
spark.stop()

Ensuite, exécutez ce script :

python test_pyspark.py

Si vous voyez un joli tableau avec les noms et les Ăąges, fĂ©licitations ! PySpark est bien installĂ© et fonctionne comme un charme. 🎊

Voici les étapes en screencast :

En résumé

  • Apache Spark est un framework puissant et polyvalent conçu pour le traitement distribuĂ© de donnĂ©es Ă  grande Ă©chelle, ce qui en fait une solution particuliĂšrement adaptĂ©e aux dĂ©fis du Big Data.

  • Il se distingue par une vitesse impressionnante, Ă©tant jusqu'Ă  100 fois plus rapide que les mĂ©thodes traditionnelles grĂące Ă  son traitement en mĂ©moire (RAM), rĂ©duisant ainsi considĂ©rablement les temps de calcul.

  • Son Ă©cosystĂšme riche intĂšgre une suite d'outils permettant de rĂ©pondre Ă  divers besoins en matiĂšre de traitement de donnĂ©es.

  • GrĂące Ă  PySpark, Spark est compatible avec Python, offrant ainsi aux utilisateurs de ce langage la possibilitĂ© d’exploiter toute la puissance du framework sans avoir Ă  apprendre Scala, ce qui le rend plus accessible Ă  un large public.

  • Enfin, sa scalabilitĂ© horizontale permet d'ajouter des nƓuds au cluster afin d'augmenter la capacitĂ© de calcul, faisant de Spark une solution idĂ©ale pour les projets nĂ©cessitant une extensibilitĂ© accrue.

Maintenant que vous avez explorĂ© les points forts de Spark, il est temps de plonger plus en profondeur dans son fonctionnement afin de maĂźtriser pleinement les nombreuses possibilitĂ©s offertes par ce framework ! 🚀 

Et si vous obteniez un diplĂŽme OpenClassrooms ?
  • Formations jusqu’à 100 % financĂ©es
  • Date de dĂ©but flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous